我有一个函数:
def globalrn(name, newname):
exec("""global {}""".format(name))
exec("""globals()[newname] = name""")
exec("""del {}""".format(globals()[name])) # using string as a variable name based from answers from https://stackoverflow.com/questions/37717584/how-to-use-string-value-as-a-variable-name-in-python
而代码的其余部分(不是函数的一部分(。。。
x = 3
globalrn('x', 'y')
print(x)
print(y)
我得到一个错误:
Traceback (most recent call last):
File "rn", line 8, in <module>
globalrn('x', 'y')
File "rn", line 4, in globalrn
exec("""del {}""".format(globals()[name]))
File "<string>", line 1
SyntaxError: cannot delete literal
我不知道为什么会这样。
(debian/ubuntu,python-3.8(
如果我理解正确,您希望重命名全局变量:你可以简单一点:globals()
允许您访问字典中的所有全局变量,因此您可以从字典中删除一个值,并使用不同的键插入它。
def globalrn(name, newname):
globals()[newname] = globals().pop(name)
(.pop(key)
删除字典中具有给定key
的条目,并返回其值(