Python3: SyntaxError: cannot delete literal

Python3: SyntaxError: cannot delete literal

我有一个功能:

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 

和其余代码(不是函数的一部分)...

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 和 returns 值的条目)