python 可调用对象

compile函数允许程序员在运行时刻迅速生成代码对象,然后就可以用exec语句或者内建函数eval 来执行这些对象或者对它们进行求值。一个很重要的观点是:exec和eval者可以执行字符串格式的Python代码。

这也是与c++等静态语言最重要的区别。

compile的三个参数都是必须的,第一参数代表了要编译的Python代码。第二个字符串,虽然是必须的,但通常被置为空串。最后的参数是个字符串,它用来表明代码对象的类型。有三种可能值:

‘eval’ 可求值的表达式,和eval一起使用

‘single’ 单一可执行语句,和exec一起使用

‘exec’ 可执行语句组,和exec一起使用。

1、可求值表达式

eval_code = compile('100 + 200', '', 'eval')
print eval(eval_code)

300

2、单一可执行语句:

single_code = compile('print "Hello world!"', '', 'single')
exec single_code

Hello world!

3、可执行语句组:

exec_code = compile("""
req = input('Count how many numbers? ')
for eachNum in range(req):
    print eachNum
""", '', 'exec')
exec exec_code

Count how many numbers? 0
1
2
3
4
5

原文地址:https://www.cnblogs.com/luhouxiang/p/2478387.html