繁体   English   中英

在函数内部运行 exec

[英]Running exec inside function

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

它会损害你的函数的性能,以及它的可维护性,但是如果你真的想让你自己的代码变得更糟,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

这至少避免了第一种方法的命名空间污染。

Alex 的答案在 Python 3 中的工作方式略有不同。

由于 exec() 是 Python 3 中的函数,因此请使用以下模式-

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

print better()
23

有关更多详细信息,请参阅此问题 - Python 2 和 Python 3 中 exec 函数的行为

是的。

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"

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM