我最近遇到了一个使用函数名称作为 if 条件一部分的测试问题,我不知道它在检查什么。 例如
def function():
return 6
if function:
print('Output1')
else:
print('Output2')
这似乎总是给出"输出 1"而不是"输出 2",我不知道如何使 if 语句条件为假。
以这种方式思考def
,如object creation
+assignment
,可以更容易地理解各种不同的情况。
def
python 中创建一个新的函数对象,所以当你编写:
>>> 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')
此函数现在将返回0
或6
,因此每个函数的计算结果应为 True 或 False 50%。