1

给定以下 Python 代码:

def avg(a):
  if len(a):
    return sum(a) / len(a)

avg当 的长度a为零或语言未指定其行为因此不应在 Python 代码中计算时,语言定义的行为是什么?

4

2 回答 2

9

默认返回值为None.

关于 Calls 的文档中

调用总是返回一些值,可能是None,除非它引发异常。如何计算此值取决于可调用对象的类型。

于 2013-02-12T15:34:42.590 回答
0

如果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()
于 2013-02-12T15:46:04.907 回答