前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 流程、循环、异常、函数的高级用法(3.0)

python 流程、循环、异常、函数的高级用法(3.0)

作者头像
友儿
发布2022-09-28 13:22:50
6210
发布2022-09-28 13:22:50
举报
文章被收录于专栏:友儿

Python的逻辑控制语句

条件判断语句

if

elif

else

代码语言:javascript
复制
a = 50
if a > 100:
    print("a 超过阈值")
elif a == 50:
    print("a 只有阈值的一半")
else:
    print("a 小于阈值")

循环语句

for

遍历一个可迭代对象(暂时理解为list), 会影响相同作用域当中的变量

代码语言:javascript
复制
l = [1, 2, 3, 4, 5, 6]
e = 0


for e in l:
    print(e)

print(f"final e value: {e}")

获取索引值和值

代码语言:javascript
复制
l = [1, 2, 3, 4, 5, 6]


for i, e in enumerate(l):
    print(f"index: {i}, value: {e}")

while循环

一定要有逻辑判断语句来退出while循环

代码语言:javascript
复制
while 判断语句:
    表达式

while True:
    判断语句
    表达式

跳出循环

  • break 停止当前循环
  • continue 跳过当前的执行逻辑, 立即执行下一个循环语句单元;
  • pass 跳过当前条件判断中的执行语句, 后续语句继续执行;

Python的异常与处理

异常

程序遇到严重错误时, 会终止程序的运行并抛出异常

代码语言:javascript
复制
def my_sub(a, b):
    return a / b

my_sub(1, 0)

捕获异常

代码语言:javascript
复制
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

索引值超过了列表长度

代码语言:javascript
复制
>>> l = [1]
>>> l[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

KeyError

找不到Key

代码语言:javascript
复制
>>> d = {"a": 1}
>>> d["b"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'b'

ValueError

传入的参数错误

代码语言:javascript
复制
>>> int('a1')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'a1'

TypeError

类型错误, 常见于运算

代码语言:javascript
复制
>>> 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(空格)
  • 缩进长度不对

如何处理异常

处理

抛出新异常

代码语言:javascript
复制
def my_sub(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        print("分母不可为0")
        raise Exception("params error")
    finally:
        print("function my_sub end")

重新抛出

代码语言:javascript
复制
def my_sub(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        print("分母不可为0")
        raise ZeroDivisionError
    finally:
        print("function my_sub end")

忽略(不推荐)

pass

用来指示当前处理语句没有正式写完, 尽量不要忽略异常, 否则代码的健壮度会很差, 造成不可预知的bug.

自定义异常

代码语言:javascript
复制
class ParamsError(Exception):
    pass
    
def my_sub(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        raise ParamsError("分母不可以为0")
    finally:
        print("function my_sub end")  
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python的逻辑控制语句
  • Python的异常与处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档