在函数内部运行exec
你怎么能在函数里面使用Python的exec关键字呢?
3 个回答
0
是的。
class A:
def __init__(self):
self.a1 = ''
self.a2 = ''
def populate():
att1 = raw_input("enter a1: ")
att2 = raw_input("enter a2: ")
my_object = A()
eval("my_obj.a1 = att1")
eval("my_obj.a2 = att2")
if eval("my_obj.a2") == 2:
print "Hooray! the value of a2 in my_obj is 2"
希望这对你有帮助。
8
亚历克斯的回答在Python 3中稍微有些不同。
因为在Python 3中,exec()是一个函数,所以要使用以下的写法-
def better():
d = {}
exec("x=23", d)
return d['x']
print better()
23
想了解更多细节,可以查看这个问题- Python 2和Python 3中exec函数的行为
19
这样做会影响你函数的性能和可维护性,但如果你真的想让自己的代码变得更糟,Python2(在Python3中这样做是行不通的,你需要用第二种方法)给了你“足够的绳子让自己绊倒”的机会(;-):
>>> def horror():
... exec "x=23"
... return x
...
>>> print horror()
23
当然,稍微好一点的方法是把exec
放在一个特定的字典里:
>>> def better():
... d = {}
... exec "x=23" in d
... return d['x']
...
>>> print better()
23
这样至少可以避免第一种方法带来的命名空间污染。