第14章 执行环境(2)

14.2 代码对象

每个可调用物的核心都是代码对象,由语句、赋值、表达式和其他可调用物组成。一般说来,代码对象可以作为函数或者方法调用的一部分来执行,也可以用exec语句或内建函数eval()来执行。从整体上看,一个Python模块的代码对象是构成该模块的全部代码。

函数对象仅是代码对象的包装,方法则是给函数对象的包装。

14.3 可执行的对象声明和内建函数

14.3.1callable()

callable()是一个布尔函数,确定一个对象是否可以通过函数操作符(())来调用。

>>> callable(dir)
True
>>> callable(__name__)
False
>>> 

14.3.2 compile()

compile()函数允许程序员在运行时迅速生成代码对象,然后就可以用exec语句或者内建函数eval()来执行这些对象或者对它们进行求值。

exec和eval()都可以执行字符串格式的Python代码。

当执行字符串形式的代码时,每次都必须对这些代码进行字节编译处理。compile()函数提供了一次性字节代码预编译,以后每次调用的时候,都不用编译了。

>>> exec_code = compile("""
... req = input('Count how many numbers? ')
... for eachnum in range(req):
... 	print eachnum
... """, '', 'exec')
>>> exec(exec_code)
0
1
2
3
4
5
>>> 

14.3.3 eval()

eval()对表达式求值,后者可以为字符串或内建函数compile()创建的预编译代码对象。

>>> eval("100 + 200 + 300")
600
>>> eval(compile("float(10)", '', 'eval'))
10.0
>>> 

14.3.4 exec

和eval()相似,exec语句执行代码对象或字符串形式的Python代码。用compile()预编译重复代码有助于改善性能,因为在调用时不必经过字节编译处理。

exec还可以接受有效的Python文件对象。

>>> file = open("C:\\Documents and Settings\\10170660\\Desktop\\makeTextFile.py")
>>> exec file

14.3.5 input()

内建函数input()是eval()和raw_input()的组合,等价于eval(raw_input())。

input()把输入作为Python对象来求值并返回表达式的结果。

>>> input("Input a expression: ") 
4
>>> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值