def spam(divisor):
return 42 / divisor
print(spam(2))
print(spam(12))
print(spam(0))
print(spam(1))
21.0
3.5
Traceback (most recent call last):
File "C:/Users/mary/PycharmProjects/test/zerodivide.py", line 7, in <module>
print(spam(0))
File "C:/Users/mary/PycharmProjects/test/zerodivide.py", line 2, in spam
return 42 / divisor
ZeroDivisionError: division by zero
当试图用一个数除以零时,就会发生 ZeroDivisionError 。
错误可以由 try 和 except 语句来处理。那些可能出错的语句被放在 try 子句中。如果错误发生,程序执行就转到接下来的 except 子句开始处。
def spam(divisor):
try:
return 42 / divisor
except ZeroDivisionError:
print('Error: Invalid argument.')
print(spam(2))
print(spam(12))
print(spam(0))
print(spam(1))
21.0
3.5
Error: Invalid argument.
None
42.0
在函数调用中的 try 语句块中,发生的所有错误都会被捕捉。
在下面的程序中,做法有所不同,将 spam() 调用放在语句块中:
def spam(divisor):
return 42 / divisor
try:
print(spam(2))
print(spam(12))
print(spam(0))
print(spam(1))
except ZeroDivisionError:
print('Error: Invalid argument.')
21.0
3.5
Error: Invalid argument.
print(spam(1)) 从未被执行是因为,一旦执行跳到 except 子句的代码,就不会回到 try 子句,它会继续向下执行。
None 值 在 python 中有一个值成为 None ,它表示没有值。None 是 NoneType 数据类型的唯一值。 如果你希望变量中存储的东西不会与一个真正的值混淆,可以使用 None 值。 有一个使用 None 的地方就是 print() 的返回值。print() 函数在屏幕上显示文本,但它不需要返回任何值,这和 len() 和 input() 不同。但既然所有函数调用都需要求值为一个返回值,那么 print() 就返回 None 。
>>> spam = print("hello")
hello
>>> None == spam
True
对于所有没有 return 语句的函数定义,python 都会在末尾加上 return None 。 而且,如果使用不带值的 return 语句,那么就返回 None 。
|