其实并不需要在一个函数里去执行另一个函数,我们也可以将其作为输出返回出来: def hi(name="yasoob"):
def greet():
return "now you are in the greet() function"
def welcome():
return "now you are in the welcome() function"
if name == "yasoob":
return greet
else:
return welcome
a = hi()
print(a)
print(a())
再次看看这个代码。在if/else 语句中我们返回greet 和welcome ,而不是greet() 和welcome() 。为什么那样?这是因为当你把一对小括号放在后面,这个函数就会执行;然而如果你不放括号在它后面,那它可以被到处传递,并且可以赋值给别的变量而不去执行它。 你明白了吗?让我再稍微多解释点细节。 当我们写下a = hi() ,hi() 会被执行,而由于name 参数默认是yasoob,所以函数greet 被返回了。如果我们把语句改为a = hi(name = "ali") ,那么welcome 函数将被返回。我们还可以打印出hi()() ,这会输出now you are in the greet() function。 |