Python:控制结构中的函数

时间:2013-10-12 13:46:50

标签: python

我想知道为什么在做这样的事情时我没有得到函数的任何输出:

def x():
  print 'hi'
  a = True
  return a

b = False

if (x and (b == False)):
  print 'some string'

  

打印'hi'

声明实际执行了吗?

1 个答案:

答案 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