Python3:语法错误:无法删除文字



我有一个函数:

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的条目,并返回其值(

最新更新