鱼C论坛

 找回密码
 立即注册
查看: 2590|回复: 2

helop 关于闭包的问题

[复制链接]
发表于 2018-8-22 22:05:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在20讲的时候,小甲鱼提到的一个例子
>>> def fun1():
        x = 5
        def fun2():
                x *= x
                return x
        return fun2

>>> fun1()
<function fun1.<locals>.fun2 at 0x023D5810>




>>> def fun1():
        x = 5
        def fun2():
                x *= x
                return x
        return fun2()

>>> fun1()
Traceback (most recent call last):
  File "<pyshell#34>", line 1, in <module>
    fun1()
  File "<pyshell#33>", line 6, in fun1
    return fun2()
  File "<pyshell#33>", line 4, in fun2
    x *= x
UnboundLocalError: local variable 'x' referenced before assignment


这是一个例子,然后他自己敲错了,这个的例子的差别就在renturn fun2()上面,一个右括号,一个没有括号,返回的是截然不同的两种状态,所以我们想问一下,加不加后面的那个括号,有什么样的影响,那个括号代表着什么,那个括号有什么意义

求帮助!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-23 00:49:53 | 显示全部楼层
加了括号,返回的是函数执行完毕的结果,不加括号,返回的是函数的内存地址。简单说就是函数加括号会被执行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-27 17:30:53 | 显示全部楼层
用大佬的话说 不加()是叫你名字  加()是叫你名字去干活。 不加返回的是地址   加返回运行结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-6 14:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表