在函数内运行exec

时间:2010-04-13 02:20:36

标签: python function exec

如何在函数中使用python exec关键字?

3 个答案:

答案 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"

希望这有帮助