python中,内建和外部模块提供了丰富的功能,我们可以从可调用对象开始,接着代码对象,然后是python语句和内建函数,其中执行其他程序的能力不仅增强了python脚本的能力,也节约了资源
可调用对象
可调用对象包括:函数,方法,类,类的实例
内建函数(BIFs)
用c/c++编写,放在_bulitin__模块里,并作为__builtins__模块导入到解释器中,查看所有属性可以通过dir(type)
用户定义函数(UDF)
通常用python编写,定义在模块的最高级,会作为全局名字空间一部风状态到系统中
类的实例
python给类提供了名为__call__的特别方法,该方法允许程序员创建可调用的对象,默认情况下,__call__()方法未实现,意味着大多数实例是不可调用的,若在类定义中覆盖了这个方法,该类的实例就可调用,调用这样的实例对象等同于调用__call__()方法,在实例中给出的参数同时也会被传入__call__()方法中
可执行的对象声明和内建函数
python提供内建函数来支持可调用/可执行对象,其中包括exec语句,这些函数版主程序员执行代码对象,也可以用内建函数compile()来生成代码对象
内建函数和语句 | 描述 |
---|---|
callable(obj) | 如果obj可调用,返回True,否则返回False |
compile(string,file,type) | 从type类型中创建代码对象,file是代码存放的地方 |
eval(obj,globals=globals(),locals=locals()) | 对obj进行求值,obj是已编译为代码对象的表达式,或是一个字符串表达式,可以给出全局或者/和局部的名字空间 |
exec obj | 执行obj、单一的python语句或者语句的集合,也就是说格式是代码对象或者字符串,obj也可以是一个文件对象 |
input(prompt=”) | 等同于eval(input(prompt=”)) |
执行其他程序
执行外部程序的os模块函数
os模块函数 | 描述 |
---|---|
system(cmd) | 执行程序cmd(字符串),等待结束返回退出代码 |
fork() | 创建一个和父进程并行的子进程 |
execl(file,arg0,arg1,…) | 用参数列表arg0,arg1等执行文件 |
execv(file,arglist) | 比execl多了个使用参数向量列表的功能 |
execle(file,arg0,arg1,…env) | 和execl相同,但提供了环境变量字典env |
execve(file,arglist,env) | 比execle多了个使用参数向量列表的功能 |
execlp(cmd,arg0,arg1,…) | 同execl相同,但是在用户的搜索路径下搜索完全的文件路径名 |
execvp(cnmd,arglist) | 比execlp多了个使用参数向量列表的功能 |
execlpe(cmd,arg0,arg1,…env) | 和execlp相同,多提供了环境变量字典env |
execvpe(cmd,arglist,env) | 和execvp相同,多提供了环境变量字典env |
spawn*(mode,file,args[,env]) | 在一个新的进程中执行路径,args作为参数,可能还有环境变量的字典env,mode显示不同操作模式 |
wait() | 等待子进程完成 |
waitpid(pid,options) | 等待指定的子进程完成 |
popen(cmd,mode=’r’,buffering=-1) | 执行字符串cmd,返回一个类文件对象作为运行进程通信句柄,默认为读取模式和默认系统缓冲 |
startfile(path) | 用关联的应用程序执行路径 |
操作系统接口
os模块属性
属性 | 描述 |
---|---|
uname() | 获取信息信息 |
getuid()/setuid(uid) | 获取/设置进程的真正的用户ID |
getpid()/getppid() | 获取真正的现在/父进程ID |
getgid()/setgid(gid) | 获取/设置进程的群组ID |
getsid()/setsid() | 获取会话ID或创建和返回新的SID |
umask(mask) | 设置现在的数字unmask,同时返回先前的那个 |
getenv(ev)/putenv(ev,value),environ | 获取和设置环境变量ev的值,os.envion属性是描述当前所有环境变量的字典 |
geteuid()/setegid() | 获取/设置当前进程的有效用户ID(GID) |
getegid()/setegid() | 获取/设置当前进程的有效组ID(GID) |
getpgid(pid)/setpgid(pid,pgrp) | 获取/设置进程GID进程PID,对于get,如果pid为0,便返回现在进程的进程GID |
getlogin() | 返回运行现在进程的用户的登陆 |
times() | 返回各种进程时期的元祖 |
seterror(code) | 返回和错误代码对应的错误信息 |
getloadavg() | 返回代表在过去1,5,15分钟内的系统平均负载值得元祖 |