第十四章 执行环境
Python 有三种不同类型的函数对象。分别是:
内建函数(BIF): C/C++写的,编译过后放到 Python 解释器当中的。 用户定义的函数(UDF)
lambda 表达式
compile():
它允许程序员在运行时迅速生成代码对象,然后就可以用 exec 语句或者内建函数
eval()来执行这些代码或者对它们进行求值。
compile(string, file, type) 这三个参数都是必须的。
第一个参数: string:要编译的 Python 代码
第二个参数: file:虽然是必须的,但通常被置为空串
第三个参数: type :字符串,用来表明代码的类型。有三个可能值:
‘eval’:可求值的表达式(和 eval()连用)
‘single’:单一可执行语句(和 exec 连用)
‘exec’:可执行语句组(和 exec 连用)
Eg1:
>>>eval_code = compile(‘100+200’, ‘’, ‘eval’)
>>>eval(eval_code)
300
Eg2:
>>>single_code = compile(‘print “hello”’, ‘’, ‘single’)
>>>exec single_code
Hello
用 compile()预编译重复代码有助于改善性能,因为在调用时不必经过字节编译处理。
exec obj :
接受对象(obj)可以是原始的字符串, 也可以是有效的 Python 文件。
一旦执行完毕, 继续对 exec 的调用就会失败, 因为 obj 已经到了 EOF 了, 若想继 续调用 exec,则必须对 obj 调用 seek (0)到文件开头。
tell()方法:告知当前在文件的何处
os.path.getsize():告知对象文件有多大
结束执行:
sys.exit() and SystemExit
sys.exitfunc()
os._exit(status):跟以上两种不同,它不执行任何清理就直接退出 Python 解释器。 且 status 参数是必须的。