-2

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

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

b = False

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

是个

打印'嗨'

语句实际执行了吗?

4

1 回答 1

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

因此,即使您已更改aFalse在您的函数中(so a = False),您的代码仍然会打印some string

于 2013-10-12T13:47:39.023 回答