Running exec inside function

房东的猫 提交于 2019-12-29 07:59:11

问题


How can you use the python exec keyword inside functions?


回答1:


It's going to damage your function's performance, as well as its maintainability, but if you really want to make your own code so much worse, Python gives you "enough rope to shoot yourself in the foot" (;-):

>>> def horror():
...   exec "x=23"
...   return x
... 
>>> print horror()
23

A tad less horrible, of course, would be to exec in a specific dict:

>>> def better():
...   d = {}
...   exec "x=23" in d
...   return d['x']
... 
>>> print better()
23

This at least avoids the namespace-pollution of the first approach.




回答2:


Alex's answer works slightly differently in Python 3.

Since exec() is a function in Python 3, use the following pattern-

def better():
    d = {}
    exec("x=23", d)
    return d['x']

print better()
23

See this question for more details- Behavior of exec function in Python 2 and Python 3




回答3:


Yes.

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"

Hope this helps



来源:https://stackoverflow.com/questions/2626582/running-exec-inside-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!