一尘不染

如何在Python中执行包含Python代码的字符串?

python

如何在Python中执行包含Python代码的字符串?


阅读 760

收藏
2020-02-16

共2个答案

一尘不染

在示例中,使用exec函数将字符串作为代码执行。

import sys
import StringIO

# create file-like string to capture output
codeOut = StringIO.StringIO()
codeErr = StringIO.StringIO()

code = """
def f(x):
    x = x + 1
    return x

print 'This is my output.'
"""

# capture output and errors
sys.stdout = codeOut
sys.stderr = codeErr

exec code

# restore stdout and stderr
sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__

print f(4)

s = codeErr.getvalue()

print "error:\n%s\n" % s

s = codeOut.getvalue()

print "output:\n%s" % s

codeOut.close()
codeErr.close()
2020-02-16
一尘不染

对于语句,请使用exec(string)(Python 2/3)exec string(Python 2)

>>> mycode = 'print "hello world"'
>>> exec(mycode)
Hello world

当需要表达式的值时,请使用eval(string)

>>> x = eval("2+2")
>>> x
4

但是,第一步应该是问自己是否真的需要。通常,执行代码应该是最后的选择:如果代码中可能包含用户输入的代码,那么它将很慢,很丑陋而且很危险。你应该始终首先考虑替代项,例如高阶函数,以查看它们是否可以更好地满足你的需求。

2020-02-16