python3变量语法错误_Python3 错误和异常

Python 有两种错误很容易辨认:语法错误和异常。

Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。

9dd1937cf70ef7a58c31e35f40e9730d.png

语法错误

Python 的语法错误或者称之为解析错,是初学者经常碰到的,如下实例

>>> while True print('Hello world')

File "", line 1, in ?

while True print('Hello world')

^

SyntaxError: invalid syntax

这个例子中,函数 print() 被检查到有错误,是它前面缺少了一个冒号 : 。

语法分析器指出了出错的一行,并且在最先找到的错误的位置标记了一个小小的箭头。

异常

即便 Python 程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。

大多数的异常都不会被程序处理,都以错误信息的形式展现在这里:

>>> 10 * (1/0)             # 0 不能作为除数,触发异常

Traceback (most recent call last):

File "", line 1, in ?

ZeroDivisionError: division by zero

>>> 4 + spam*3             # spam 未定义,触发异常

Traceback (most recent call last):

File "", line 1, in ?

NameError: name 'spam' is not defined

>>> '2' + 2               # int 不能与 str 相加,触发异常

Traceback (most recent call last):

File "", line 1, in

TypeError: can only concatenate str (not "int") to str

异常以不同的类型出现,这些类型都作为信息的一部分打印出来: 例子中的类型有 ZeroDivisionError,NameError 和 TypeError。

错误信息的前面部分显示了异常发生的上下文,并以调用栈的形式显示具体信息。

表 1 Python常见异常类型

异常类型含义实例

AssertionError

当 assert 关键字后的条件为假时,程序运行会停止并抛出 AssertionError 异常

>>> demo_list = ['C语言中文网']

>>> assert len(demo_list) > 0

>>> demo_list.pop()

'C语言中文网'

>>> assert len(demo_list) > 0

Traceback (most recent call last):

File "", line 1, in

assert len(demo_list) > 0

AssertionError

AttributeError

当试图访问的对象属性不存在时抛出的异常

>>> demo_list = ['C语言中文网']

>>> demo_list.len

Traceback (most recent call last):

File "", line 1, in

demo_list.len

AttributeError: 'list' object has no attribute 'len'

IndexError

索引超出序列范围会引发此异常

>>> demo_list = ['C语言中文网']

>>> demo_list[3]

Traceback (most recent call last):

File "", line 1, in

demo_list[3]

IndexError: list index out of range

KeyError

字典中查找一个不存在的关键字时引发此异常

>>> demo_dict={'C语言中文网':"c.biancheng.net"}

>>> demo_dict["C语言"]

Traceback (most recent call last):

File "", line 1, in

demo_dict["C语言"]

KeyError: 'C语言'

NameError

尝试访问一个未声明的变量时,引发此异常

>>> C语言中文网

Traceback (most recent call last):

File "", line 1, in

C语言中文网

NameError: name 'C语言中文网' is not defined

TypeError

不同类型数据之间的无效操作

>>> 1+'C语言中文网'

Traceback (most recent call last):

File "", line 1, in

1+'C语言中文网'

TypeError: unsupported operand type(s) for +: 'int' and 'str'

ZeroDivisionError

除法运算中除数为 0 引发此异常

>>> a = 1/0

Traceback (most recent call last):

File "", line 1, in

a = 1/0

ZeroDivisionError: division by zero

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值