如何实现变量名与其存储的字符串值互换并生成新变量
实现方法(Python环境)
以下方案均基于你给出的示例场景my_variable = 'my_new_variable',最终得到my_new_variable = 'my_variable':
1. 全局作用域实现
直接操作全局命名空间字典globals()即可:
my_variable = 'my_new_variable' # 执行互换 globals()[my_variable] = 'my_variable' # 验证 print(my_new_variable) # 输出结果:my_variable
2. 函数局部作用域实现
如果变量定义在函数内部,替换为操作局部命名空间字典locals():
def test_swap(): my_variable = 'my_new_variable' locals()[my_variable] = 'my_variable' print(my_new_variable) # 输出结果:my_variable test_swap()
3. 通用无硬编码实现
如果不想手动写入原变量名的字符串,可以先遍历命名空间匹配得到原变量名再执行互换:
my_variable = 'my_new_variable' # 自动匹配获取原变量名 old_name = next(k for k, v in globals().items() if v == 'my_new_variable') globals()[my_variable] = old_name # 验证 print(my_new_variable) # 输出结果:my_variable
注意:如果原变量存储的字符串不是合法Python标识符(包含空格、特殊字符、以数字开头等),生成的新变量无法直接通过变量名访问,仅能通过globals()/locals()字典读取对应值。
内容的提问来源于stack exchange,提问作者Thavas Antonio
相关产品推荐
相关产品推荐

