Python 中的动态变量赋值
在 Python 中,通过直接修改 locals() 字典来动态设置局部变量并不是一个可行的解决方案。与普遍看法相反,任何此类修改都不会在函数范围内持续存在。
替代方法
要动态设置局部变量,请考虑使用以下任意方法:
字典
创建一个字典并动态分配键值对:
d = {} d['xyz'] = 42
对象属性
使用对象并动态设置属性:
class C: pass obj = C() setattr(obj, 'xyz', 42)
编辑
访问非函数命名空间中的变量(模块、类定义、实例)通常涉及字典查找。然而,函数局部变量通过预编译编译器已知的变量名称来优化速度。
在 Python 的 C 实现中,在函数内调用 locals() 会创建一个用当前局部变量值初始化的字典。该字典随着局部变量的更改而更新,并在后续调用 locals() 时返回。
在 IronPython 中,调用 locals() 的函数使用字典作为其局部变量存储。对局部变量的赋值会改变字典,反之亦然。但是,在 IronPython 中将不同的名称绑定到局部函数可以访问绑定范围的局部变量,而不是函数的局部变量。
警告
重要的是要注意分配给 locals() 返回的字典可能会产生不可预测的结果。强烈建议不要依赖这些作业。
以上是如何在Python中动态分配局部变量?的详细内容。更多信息请关注PHP中文网其他相关文章!