为什么函数对象在python中评估为True?

ali*_*oar 1 python function-pointers function

在python中,构建如下构造是有效的:

def a(): 
    return 0

if a: 
    print "Function object was considered True"
else:  
    print "Function object was considered False"
Run Code Online (Sandbox Code Playgroud)

我想问一下函数指针被评估为True的逻辑是什么.

为什么这种结构插入语言?

Mar*_*ers 10

很多东西都True用Python 来评估.从布尔运算符文档:

在布尔运算的上下文中,以及控制流语句使用表达式时,以下值被解释为false : False, None所有类型的数字零,以及空字符串和容器(包括字符串,元组,列表,字典,集合)和frozensets).所有其他值都被解释为true.

像许多东西一样,Python中的函数是对象,而不是空的.因此,在布尔上下文中,它们计算为True.