Tianxiansen 发表于 2021-11-5 10:33:59

函数问题

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 10:49:44

本帖最后由 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()
      也许可以加深理解

Tianxiansen 发表于 2021-11-5 11:43:04

jackz007 发表于 2021-11-5 10:49
foo1 返回对 print() 函数的调用结果,foo2 返回 print() 函数的调用地址。就是说,foo2() 就是...

谢谢
页: [1]
查看完整版本: 函数问题