a05040058 发表于 2021-2-10 06:38:51

Fun()和Fun有什么区别呢?

def Fun1():
        x = 5
        def Fun2()
                x *=x
                return x
        return Fun2---------------------------------Fun2()

请问上面的例子中“Fun2”和“Fun2()”有什么区别,为什么不打括号可以访问?
谢谢

wp231957 发表于 2021-2-10 07:23:07

值和址的区别
不带括号返回函数地址
带括号返回函数值

逃兵 发表于 2021-2-10 07:35:42

本帖最后由 逃兵 于 2021-2-10 07:36 编辑

首先,你写的函数有错误
修改代码
def Fun1():
    x = 5
    def Fun2():
      nonlocal x
      x *=x
      return x
    return Fun2


不带括号的话,返回的是函数本身,带括号返回的是函数执行结果

>>> a=Fun1()
>>> a()
25
>>> a()
625
>>> a()
390625
>>>

>>> Fun1()()
25
>>> Fun1()()
25
>>> Fun1()()
25

>>> Fun1()
<function Fun1.<locals>.Fun2 at 0x00000000030B2A68>

a05040058 发表于 2021-2-10 09:18:33

逃兵 发表于 2021-2-10 07:35
首先,你写的函数有错误
修改代码



谢谢,解答详细
页: [1]
查看完整版本: Fun()和Fun有什么区别呢?