Python:函数名称,就像条件一样



我最近遇到了一个使用函数名称作为 if 条件一部分的测试问题,我不知道它在检查什么。 例如

def function():
return 6
if function:
print('Output1')
else:
print('Output2')

这似乎总是给出"输出 1"而不是"输出 2",我不知道如何使 if 语句条件为假。

以这种方式思考def,如object creation+assignment,可以更容易地理解各种不同的情况。

defpython 中创建一个新的函数对象,所以当你编写:

>>> def foo():
>>>     return 5

def创建名为foo的对象,并将函数分配给它。

试试这个例子:

>>> f = 10
>>> def f():
...     return 5
...
>>> f

在你的测试中function总是有一个值并且它不是None,所以你不能让if function:

参考

评论很好。用答案形式说:
function指向函数的内容:它不接受任何参数,并返回值 6。
if function测试函数本身的真实性,而不是它返回的内容。这将始终评估为True

如果您希望它根据返回值返回 true 或 false,则需要调用该函数,并用括号表示它是一个函数调用:function()。请注意,b/c 此函数返回6这也将始终计算为 True,因为非零数的计算结果为 True。如果你想要不同的结果,你需要你的函数返回不同的值,例如:

import random
def function():
return random.choice([0,6])
if function():
print('Output1')
else:
print('Output2')

此函数现在将返回06,因此每个函数的计算结果应为 True 或 False 50%。

最新更新