函数问题
def funx(x):def funy(y):
return x*y
return funy
def fun1():
x = 5
def fun2():
nonlocal x
x *= x
return x
return fun2()
为什么两个不一致,这两者有什么区别 本帖最后由 jackz007 于 2021-11-5 11:09 编辑
def foo1(s):
return print(s)# 返回函数的调用结果,当然会打印输出 s。
def foo2():
return print # 只是返回函数的调用地址,不会调用函数,不会打印任何东西。
foo1('hello foo1 !')
foo2()('hello foo2 !')
foo1 返回对 print() 函数的调用结果,foo2 返回 print() 函数的调用地址。就是说,foo2() 就是 print,而 foo2()() 就是 print(),两者的最大区别就是,调用 foo1() 会执行 print(),而调用 foo2() 则不会。
研究一下这个代码:
x = print # 只是赋值,不会调用 print()
x('hello x')# 实际调用 print()
也许可以加深理解 jackz007 发表于 2021-11-5 10:49
foo1 返回对 print() 函数的调用结果,foo2 返回 print() 函数的调用地址。就是说,foo2() 就是...
谢谢
页:
[1]