您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python装饰器中的变量范围

python装饰器中的变量范围

由于nr_of_rounds是由 拾取的,因此您可以将其视为“只读”变量。如果要写入它(例如减少它),则需要明确地告诉python -在这种情况下,python3.xnonlocal关键字将起作用。

简要说明一下,当cpython遇到函数定义时,它会执行以下操作:查看代码并确定所有变量是 local 还是 non-local 。局部变量(认情况下)是赋值语句,循环变量和输入参数出现在左侧的任何内容。其他所有名称都不是本地名称。这样可以进行一些巧妙的优化1。要以与本地相同的方式使用非本地变量,需要通过globalnonlocal语句明确告知python 。当python遇到它认为 应该 是本地的东西但实际上不是的时候,您会得到一个UnboundLocalError

1 cpython字节码生成器将本地名称转换为数组中的索引,以便本地名称查找(LOAD_FAST字节码指令)与索引数组一样快,并且具有正常的字节码开销。

python 2022/1/1 18:42:21 有283人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶