为什么在这个例子中我必须在f的末尾添加()?对象代码圆括号(初学者)
def do_twice(f):
f()
f()
def print_spam():
print 'spam'
do_twice(print_spam)
spam
spam
是因为函数对象需要函数的指定参数吗?
为什么在这个例子中我必须在f的末尾添加()?对象代码圆括号(初学者)
def do_twice(f):
f()
f()
def print_spam():
print 'spam'
do_twice(print_spam)
spam
spam
是因为函数对象需要函数的指定参数吗?
为什么我在这个例子中添加()在f的末尾?
因为f
是功能,和f()
实际上调用功能。在你的例子中do_twice(print_spam)
发送do_twice
函数的实际print_spam
函数,而不是它的结果。如果你要使用do_twice(print_spam())
,该do_twice
函数将收到print_spam
的返回值,这是None
这是一种语言的决定,蟒蛇确实需要所有的函数调用有()
使事情毫不含糊的。就拿这几个例子,
a = b
,如果b是一个功能,那将是模棱两可什么a
会得到(在B函数对象或调用B的结果呢?)。
a(b)
a
会得到什么? (b函数还是调用b?的结果)。通过要求()
,不会出现这些问题
将括号添加到函数名称的末尾意味着您正在调用它。如果你不这样做,该函数将不会被调用。 – rubik 2012-03-18 08:14:45
我想....因为f只会引用该对象,而f()将执行该函数 – 2012-03-18 08:16:09