码迷,mamicode.com
首页 > 编程语言 > 详细

python执行环境

时间:2015-06-05 12:26:15      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:python

在python中有很多种运行外部程序的方法,有些特定的场景包括:在当前脚本继续运行、创建和管理子进程、执行外部命令或程序、执行需要输入的命令、通过网络来调用命令、执行命令来创建需要处理的输出、执行其它的python脚本、执行一系列动态生成的python脚本、导入python模块和执行它顶层的代码,这些场景都与python执行环境有关,下面先从可调用对象说起。

1、可调用对象

python有四种可调用对象:函数、方法、类,以及一些类的实例。这些对象的任何引用或者别名都是可调用的,还可以通过函数式编程接口来进行调用,函数式编程接口如apply()、filter()、map()以及reduce()。
python有3种不同类型的函数对象,分别是内建函数、用户自定义函数、lambda表达式。方法与类相关联,包括内建方法和自定义方法。类是我们经常遇到的一个概念,利用类的可调用性可以创建实例。类的实例默认是不可以调用的,只有定义类的时候实现了call()方法,类的实例才是可调用的。

2、代码对象

可执行对象,如语句、赋值、表达式,甚至模块,是构成代码块的一部分,被称为代码对象,如果要执行这些代码,必须首先要转换成字节编译的代码,因为这才是真正的可执行对象。一般说来,代码对象可以作为函数或者方法调用的一部分来执行,也可用exec语句或内建函数eval()来执行。如自定义函数的func_code属性,便是一个代码对象。

3、内建函数

python提供了大量的内建函数支持可执行对象,包括:
callable(obj):判断obj是否可调用。
compile(string,file,type):从type类型中创建代码对象,file是代码存放的地方,通常设为“”空字符串,type可以是eval、single或者exec,分别表示可求值表达式、单一可执行语句、可执行语句组,对于返回值,第一个与eval()配合使用,后面两个与exec一起使用。
eval(obj,globals=globals(),locals=locals()):对obj进行求值,obj是已编译为代码对象的表达式,或是一个字符串表达式,可以给出全局、局部的名字空间。
exec obj:执行obj,单一的python语句或者语句的集合,也就是说格式是代码对象或者字符串,obj也可以是一个文件对象。
input(prompt=”):等同于eval(raw_input(prompt=”))

4、执行其它python程序

在运行时刻,有很多执行另外python脚本的方法。第一次导入模块会执行模块最高级别的代码,即没有缩进的代码。导入模块的副作用是导致最高级别的代码运行,而execfile()也可以读取python脚本的内容,但是仅可以在现有的执行环境下运行。再一个就是在命令行运行python脚本,有两个好用的命令行参数,“-c”参数可以让python的导入机制自动查找模块并导入,“-m”参数等效与“name”的值为“main”。

5、执行非python程序

在python程序里,我们也可以执行非python程序,这些程序包括了二进制可执行文件,其它的shell脚本等等,所有的要求只是一个有效的执行环境。不同的操作系统,python模块不同,但只需要导入os模块就可以了,python会根据特定的操作系统装载正确的模块。
os.system(cmd):执行程序cmd,cmd是个字符串,等待程序结束,返回退出码,windows下始终为0。
os.popen(cmd,mode=’r’,buffering=-1):执行字符串cmd,返回一个类文件对象作为运行程序通信句柄,默认为读取模式和默认系统缓冲。
os.fork():创建一个和父进程并行的子进程,通常来说和exec*()一起使用,返回两次,一次给父进程,一次给子进程。
os.exec*():exec*()家族,用参数列表、参数向量列表、环境变量来执行文件、命令。
os.spawn*():spawn*()家族,在新进程中执行命令。
os.wait*():wait()等待子进程完成,waitpid()等待指定的子进程完成。
除了os模块,subprocess也可以作类似的工作,它是一个面向进程的模块。相关的模块还有atexit、popen2、commands、getopt、site、platform等。

6、程序结束执行

当程序运行完成,所有模块最高级的语句执行完毕后退出,这是干净的执行,可能有很多情况,需要从python提前退出,比如某种致命错误,或是不满足继续执行的条件的时候,在python中,有各种应对错误的方法。
sys.exit(status=0):立即退出程序并返回调用程序,当调用这个函数时,就会触发SystemExit异常,这个异常是唯一不看作错误的异常。
sys.exitfunc():默认是不可用的,但可以改写它以提供额外的功能,当调用了syt.exit()并在解释器退出之前,就会用到这个函数了。
os._exit(status):这个函数提供的功能与上面的两个函数相反,根本不执行任何清理便立即退出python。
os.kill(pid,sig):发送sig信号给pid进程。

python执行环境

标签:python

原文地址:http://blog.csdn.net/ieearth/article/details/46373257

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!