动态变量设置:超越 locals()
在 Python 中,如果变量名称本身是动态的,则动态设置局部变量会带来挑战。与流行的假设相反,对 locals() 字典的修改对于在函数内设置局部变量并不总是可靠的。
替代方法:
而不是依赖 locals( ),考虑以下因素替代方案:
使用字典:
创建一个字典并将动态变量名称分配给一个键。通过字典访问值。
d = {} d['xyz'] = 42 print(d['xyz']) # Prints 42
使用类属性:
定义一个类并将动态变量名称设置为属性。通过类实例访问值。
class C: pass obj = C() setattr(obj, 'xyz', 42) print(obj.xyz) # Prints 42
理解 Locals() 行为:
虽然 locals() 可能在函数内部工作,因为对于编译器优化,需要注意的是直接修改 locals() 可能会导致意外结果。对返回字典的赋值是短暂的,将在下一次 locals() 调用时被覆盖。
IronPython 细节:
在 IronPython 中,locals() 的行为有所不同。以不同名称调用 locals() 会绑定到该名称所绑定范围的局部变量。但是,无法通过此绑定名称访问函数局部变量。
以上是除了使用 locals() 之外,如何在 Python 中动态设置局部变量?的详细内容。更多信息请关注PHP中文网其他相关文章!