给定以下 Python 代码:
def avg(a):
if len(a):
return sum(a) / len(a)
avg当 的长度a为零或语言未指定其行为因此不应在 Python 代码中计算时,语言定义的行为是什么?
如果len(a)is 0,那将被视为False-like 值,并且您的return语句将无法到达。当控制流脱离函数底部而没有到达显式return语句时,Python 函数会隐式返回None:
>>> print(avg([]))
None
Iflen(a)没有定义——换句话说,如果对象没有__len__()方法——你会得到一个TypeError:
>>> print(avg(False))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in avg
TypeError: object of type 'bool' has no len()