Python的逻辑控制语句
条件判断语句
if
elif
else
a = 50 if a > 100: print("a 超过阈值") elif a == 50: print("a 只有阈值的一半") else: print("a 小于阈值")
循环语句
for
遍历一个可迭代对象(暂时理解为list), 会影响相同作用域当中的变量
l = [1, 2, 3, 4, 5, 6] e = 0 for e in l: print(e) print(f"final e value: {e}")
获取索引值和值
l = [1, 2, 3, 4, 5, 6] for i, e in enumerate(l): print(f"index: {i}, value: {e}")
while
循环一定要有逻辑判断语句来退出
while
循环while 判断语句: 表达式 while True: 判断语句 表达式
跳出循环
break
停止当前循环
continue
跳过当前的执行逻辑, 立即执行下一个循环语句单元;
pass
跳过当前条件判断中的执行语句, 后续语句继续执行;
Python的异常与处理
异常
程序遇到严重错误时, 会终止程序的运行并抛出异常
def my_sub(a, b): return a / b my_sub(1, 0)
捕获异常
try: 表达式 except [Exception] as e: 表达式 finnaly: 表达式 def my_sub(a, b): try: return a / b except ZeroDivisionError: # print(e) print("分母不可为0") return None finally: print("function my_sub end") my_sub(1, 0)
Exception
所有异常的基类, 所有的异常都是Exception的子类
- 处理异常颗粒度要细一点, 尽量不要捕获基类Exception, 尤其是数据处理的时候.
常见的异常
IndexError
索引值超过了列表长度
>>> l = [1] >>> l[2] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range
KeyError
找不到Key
>>> d = {"a": 1} >>> d["b"] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'b'
ValueError
传入的参数错误
>>> int('a1') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'a1'
TypeError
类型错误, 常见于运算
>>> 1 + '2' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'int' and 'str'
SyntaxError
语法报错, 检查自己的语法有没有写错
IndentationError
缩进错误
- 混用tab和space(空格)
- 缩进长度不对
如何处理异常
- 处理
抛出新异常
def my_sub(a, b): try: return a / b except ZeroDivisionError: print("分母不可为0") raise Exception("params error") finally: print("function my_sub end")
重新抛出
def my_sub(a, b): try: return a / b except ZeroDivisionError: print("分母不可为0") raise ZeroDivisionError finally: print("function my_sub end")
忽略(不推荐)
pass
用来指示当前处理语句没有正式写完, 尽量不要忽略异常, 否则代码的健壮度会很差, 造成不可预知的bug.
自定义异常
class ParamsError(Exception): pass def my_sub(a, b): try: return a / b except ZeroDivisionError: raise ParamsError("分母不可以为0") finally: print("function my_sub end")
Comment here is closed