如何在函数中使用python exec关键字?
答案 0 :(得分:13)
这会损害你的功能性能以及它的可维护性,但是如果你真的想让你自己的代码变得更糟,那么Python会给你“足够的绳索来射击自己”(; - ):< / p>
>>> 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
这至少避免了第一种方法的命名空间污染。
答案 1 :(得分:2)
Alex的答案在Python 3中的工作方式略有不同。
由于exec()是Python 3中的函数,请使用以下模式-
def better():
d = {}
exec("x=23", d)
return d['x']
print better()
23
有关更多详细信息,请参见此问题- Behavior of exec function in Python 2 and Python 3
答案 2 :(得分: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"
希望这有帮助