gpt4 book ai didi

python - 在 Python 2.6 中访问外部作用域

转载 作者:太空狗 更新时间:2023-10-29 21:16:20 27 4
gpt4 key购买 nike

比如说,我有一些变量作用域,在这个作用域中调用的函数想要更改一些不可变变量:

def outer():    s = 'qwerty'    n = 123    modify()def modify():    s = 'abcd'    n = 456

是否有可能以某种方式访问​​外部范围?类似于 Py3k 中的 nonlocal 变量。

当然我可以在这种情况下执行s,n = modify(s,n),但是如果我需要一些在那里执行的通用“注入(inject)”并且必须能够重新分配给任意变量怎么办?

我考虑的是性能,所以,如果可能的话,eval 和栈帧检查是不受欢迎的:)


UPD:这是不可能的。时期。但是,有一些选项如何访问外部范围内的变量:

  1. 使用全局变量。顺便说一下,func.__globals__ 是一个可变字典;)
  2. 将变量存储在字典/类实例/任何其他可变容器中
  3. 将变量作为参数提供并将它们作为元组返回:a,b,c = innerfunc(a,b,c)
  4. 注入(inject)其他函数的字节码。这可以通过 byteplay python 模块实现。

最佳答案

在函数外定义变量并使用global关键字。

s, n = "", 0

def outer():
global n, s
n = 123
s = 'qwerty'
modify()

def modify():
global n, s
s = 'abcd'
n = 456

关于python - 在 Python 2.6 中访问外部作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4763965/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com