Python 运行exec内部函数
如何在函数内部使用python exec关键字?这会损害函数的性能和可维护性,但如果您真的想让自己的代码变得更糟,Python2(这在Python3中不起作用,您需要使用第二种替代方法)会给您“足够的绳子,让您可以自食其果”(;-): 当然,稍微不那么可怕的是在特定的指令中执行Python 运行exec内部函数,python,function,exec,Python,Function,Exec,如何在函数内部使用python exec关键字?这会损害函数的性能和可维护性,但如果您真的想让自己的代码变得更糟,Python2(这在Python3中不起作用,您需要使用第二种替代方法)会给您“足够的绳子,让您可以自食其果”(;-): 当然,稍微不那么可怕的是在特定的指令中执行exec: >>> def better(): ... d = {} ... exec "x=23" in d ... return d['x'] ... >>> prin
exec
:
>>> def better():
... d = {}
... exec "x=23" in d
... return d['x']
...
>>> print better()
23
这至少避免了第一种方法的名称空间污染。是的
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"
希望这有帮助Alex的答案在Python3中的工作方式略有不同 因为exec()是Python3中的一个函数,所以使用以下模式-
def better():
d = {}
exec("x=23", d)
return d['x']
print better()
23
有关更多详细信息,请参见此问题-
到底是什么给你带来了麻烦?到目前为止你尝试了什么?你想做什么?eval和exec,Python中的两个不同的东西。eval(“my_obj.a1=att1”)会给你一个语法错误(由eval引发)(改为try exec)。
eval()
在Python中只接受表达式,赋值是语句,而不是表达式。对不起,我显然发了一篇不好的帖子。我现在看到了错误,意识到我做了一个愚蠢的举动。我想我一定是被考试的压力困扰了。抱歉。有时我需要在进行符号计算时动态地生成变量。你还有什么建议要做到这一点,最好不要使用exec?@imranal我的代码中需要用到这一点,而我找到的唯一方法就是使用“exec”。从最糟糕的exec()使用示例开始,你有没有找到其他选项?我见过python3有没有一个不涉及创建字典的解决方案?使用exec('x=23',globals())
但请注意,这会将exec内部生成的所有变量添加到全局范围中。它还会覆盖所有同名变量。
def better():
d = {}
exec("x=23", d)
return d['x']
print better()
23