我试图将包含Python变量赋值的String转换为实际变量。
以下是为我工作的。
s = "VAR = [1,55]"
exec(s)
print(VAR)
但是当将此代码放在函数中时,VAR永远不会被定义。
def myFunction():
s = "VAR = [1,55]"
exec(s)
print(VAR)
myFunction()
我不确定我错过了什么。在此先感谢您的帮助!
回答一些问题......
错误消息:" NameError:name' VAR'未定义"
使用:Python 3
答案 0 :(得分:2)
python 2.7
def myfunc():
v1 = 11
exec "v1 = 22"
print v1
myfunc() # 22
def myFunction():
VAR = None
s = "VAR = [1,55]"
exec(s)
print(VAR)
myFunction() # [1, 55]
OR
def myFunction():
#VAR = None
s = "VAR = [1,55]"
exec(s)
print(locals()["VAR"])
myFunction() # [1,55]
答案 1 :(得分:2)
答案 2 :(得分:1)
在Python 2.7中你可以做到:
>> s = "VAR=55"
>> exec(s)
>> VAR
55
如果您需要自定义命名空间,请执行以下操作:
>> my_ns = {}
>> exec "VAR=55" in my_ns
>> my_ns["VAR"]
55
类似适用于Python 3,但exec
实际上有一个函数,因此使用exec(...)
。例如:
>> s = "VAR=55"
>> exec(s)
>> VAR
55
当你使用功能时,范围发挥作用。您可以使用locals()
,globals()
或使用自定义命名空间:
>>def foo():
ns = {}
s = "VAR=55"
exec(s) in ns
print(ns["VAR"])
>>foo()
55