我想知道为什么在做这样的事情时我没有得到函数的任何输出:
def x():
print 'hi'
a = True
return a
b = False
if (x and (b == False)):
print 'some string'
是
打印'hi'
声明实际执行了吗?
答案 0 :(得分:3)
不,print 'hi'
语句未执行。您需要调用该函数才能运行:
if (x() and (b == False)):
注意x()
,括号调用(调用)函数。
以上可以更好地表达为:
if x() and not b:
Python函数是第一类对象; x
只是对函数对象的引用,不会调用它。函数对象与Python中的大多数对象一样,在布尔上下文中被视为True
:
>>> def foo(): return False
...
>>> foo()
False
>>> bool(foo)
True
所以,即使您已将a
更改为您的False
a = False
,您的代码仍已打印some string