写作绅士,读作丧尸 X岛揭示板
 首页版规 |用户系统 |移动客户端下载 | 丧尸路标 | | 常用图串及路标 | 请关注 公众号:【矛盾苇草】| 人,是会思考的芦苇
常用串:·豆知识·跑团板聊天室·公告汇总串·X岛路标

No.64382723 - 无标题 - 技术宅


回应模式
No.64382723
名 称
E-mail
标题
颜文字
正文
附加图片
•程序语言、压制投稿、视频制作以及各计算机领域的技术问题
•我觉得还是CSDN靠谱一点
•本版发文间隔为15秒。

收起 查看大图 向左旋转 向右旋转
无标题 无名氏 2024-11-13(三)23:45:48 ID:XJzHWCJ [举报] [订阅] [只看PO] No.64382723 [回应] 管理
肥哥们,在学python,有些疑问,请看
def f(fun):
print(10)
outvar=1
tbc=2
def inn(arg):
nonlocal tbc
print(outvar)
tbc+=1
print(f'{tbc =}')
return fun(arg)
return inn

c=f.__code__

c.co_varnames
#('fun','inn')
c.co_cellvars
#('fun', 'outvar', 'tbc')
为什么outvar和tbc不在co_varnames中呢?这两个也是局部变量吧(つд⊂)
jp
Tips 无名氏 2099-01-01 00:00:01 ID:Tips超级公民 [举报] No.9999999 管理
| ω・´) X岛除默认举报理由外没有自删功能。
收起 查看大图 向左旋转 向右旋转
无标题 无名氏 2024-11-13(三)23:48:41 ID:XJzHWCJ (PO主) [举报] No.64382752 管理
我缩进没了( ゚∀。)
刚刚交互台关掉了,用记事本复现一下
无标题 无名氏 2024-11-14(四)00:15:46 ID:ECoMLCH [举报] No.64383074 管理
你闭包了,现在它们是闭包变量
无标题 无名氏 2024-11-14(四)01:18:56 ID:ECoMLCH [举报] No.64383658 管理
>>No.64383074
你说的那几个变量储存在,f函数return的那个inn的inn.__closure__里
无标题 无名氏 2024-11-14(四)01:22:26 ID:ECoMLCH [举报] No.64383689 管理
>>No.64382723
这样的原因很好解释,当f函数运行结束后f的局部变量会被释放,但是由于inn还需要使用这些变量,所以就建立了这个机制保证这些变量的引用
无标题 无名氏 2024-11-14(四)23:49:05 ID:XJzHWCJ (PO主) [举报] No.64393181 管理
>>No.64383689
谢谢肥哥解答(つд⊂)
不过fun也被访问了吧,还是说函数的形参都会加入co_varnames( ゚∀。)

UP主: