Python解释器有很多内建函数。下面是以字母顺序列出__import__(name[,globals[,locals[,fromlist[,level]]]])被import语句调用的函数。它的存在主要是为了你可以用另外一个有兼容接口的函数来改变import语句的语义.为什么和怎么做的例子,标准库模块ihooks和rexec.也可以查看imp,它定义了有用的操作,你可以创建你自己的__import__()函数.例如,语句importspam结果对应下面的调用:__import__('spam',globals(),locals(),[],-1);语句fromspam.hamimporteggs结果对应调用__import__('spam.ham',globals(),locals(),['eggs'],-1).注意即使locals()和['eggs']作为参数传递,__import__()函数不会设置局部变量eggs;import语句后面的代码完成这项功能的.(实事上,标准的执行根本没有使用局部参数,仅仅使用globals决定import语句声明package的上下文.)当name变量是package.module的形式,正常讲,将返回顶层包(第一个点左边的部分),而不是名为name的模块.然而,当指定一个非空的formlist参数,将返回名为name的模块.这样做是为了兼容为不同种类的import语句产生的字节码;当使用importspam.ham.eggs,顶层包spam必须在导入的空间中,但是当使用fromspam.hamimporteggs,必须使用spam.ham子包来查找eggs变量.作为这种行为的工作区间,使用getattr()提取需要的组件.例如,你可以定义下面:defmy_import(name):mod=__import__(name)components=name.split('.')forcompincomponents[1:]:mod=getattr(mod,comp)returnmodlevel指定了是否使用相对或绝对导入.默认是-1将使用将尝试使用相对或绝对导入.0仅使用绝对导入.正数意味着相对查找模块文件夹的level层父文件夹中调用__import__。abs(x)返回一个数的绝对值。参数也许是一个普通或长整型,或者一个浮点数。如果参数是一个复数,返回它的积。all(iterable)如果迭代的所有元素都是真就返回真。defall(iterable):forelementiniterable:ifnotelement:returnFalsereturnTrue版本2.5中新增.any(iterable)如果迭代中有一个元素为真就返回真。defany(iterable):forelementiniterable:ifelement:returnTruereturnFalse版本2.5中新增.basestring()这个抽象类型是str和unicode的父类。它不能被调用或初始化,但是它可以使用来测试一个对象是否是str或unicode的实例。isinstance(obj,basestring)等价于isinstance(obj,(str,unicode))版本2.3中新增.bool([x])将一个值转换为Boolean,使用标准的真测试程序。如果x是假或忽略了,将返回False;否则将返回True.bool也是一个class,它是int的一个子类,bool类不能进一步子类化。它仅有False和True两个实例。callable(object)如果object参数可以调用就返回True,否则返回False。如果返回True,它仍然可能调用失败,但是如果返回False,就永远不可能调用成功。注类是可调用的(调用一个类返回一个实例);类的实例如果有一个__call__()方法就是可调用的。chr(i)返回一个一个ascii码是整数i的字符的字符串。例如,chr(97)返回string'a'.这和ord()刚好相反。这参数在[0..255]之间,全部包含。如果超出这个范围,就抛出ValueErrorclassmethod(function)返回函数的一个类方法。一个类方法Returnaclassmethodforfunction.一个类方法接收类作为它的第一个潜在参数,就像一个实例方法接收一个实例。声明一个类方法,如下:classC:@classmethoddeff(cls,arg1,arg2,...):...@classmethod形式是一个函数decorator。在函数参考手册的第七章有关函数定义的描述寻找更多的细节.它即可以在一个类(例如C.f)上调用,也可以在一个实例上调用。这个实例将忽略它的类。如果一个继承类调用一个类方法,这继承类对象将作为第一个潜在的参数传递。类方法不同于C++或Java的静态方法。如果你想这样做,使用staticmethod()。cmp(x,y)根据比较两介对象x和y的结果,返回一个整数。如果xy,返回值是负的,如果x==y,返回0,如果xy,返回一个正数.compile(string,filename,kind[,flags[,dont_inherit]])编译string为一个代码对象。代码对象能够通过exec语句执行或者通过调用eval()计算。这filename参数指定代码从哪个文件读取。如果不从文件中读取,就须传递一些可识别的值(通常使用'string')。kind参数指定哪种代码被编译;如果是包含一系列语句组成的子符串可以‘exec’,如果是由一个表达式组成,就'eval',如果由一个交互语句组成就‘singlw’(在后面的例子,表达式语句计算的结果不是None将打印出来)。当编译一个多行语句时,应用两个警告:必须以'\n'作为行结束符,同时输入必须至少以一个'\n'作为结束。如果是以'\r\n'作为行结束,使用string的repalce()方法将其改为‘\n’.可先的参数flags和dont_inherit控制影响string编译的future语句。更详细的请参考英文文档。complex([real[,imag]])创建一个复数real+imag*j或者将一个string或者number转化为一个复数.如果第一个参数是一个字符串,它将作为复数解释,函数将被调用,而忽略第二个参数。第二个参数不可能是一个字符串。每一个参数都可能是一个数字类型包括复数.如果imag省略了,它默认为0,函数将当作一个数字转换函数像int(),long()andfloat().如果参数都省略了,将返回0j.delattr(object,name)与setattr()相对的,参数是一个对象和一个string.string必须是对象的一个属性。函数删除object这个名为string的属性。例如,delattr(x,'foobar')等价于delx.foobardict([arg])以一个可选的位置参数或一组关键词参数初始化一个字典。如果没有给出参数,返回一个空的字典。如果位置参数arg是一个映射对象,返回一个字典映射与映射对象相同的keys对应同样的值。那么位置参数应是一个序列,支持迭代的容器,或者是一个迭代对象。参数的每一个元素也必须是其中的一种,同时每一个包含两个对象。第一个作为新字典的key,同时第二个作为这个key的值。如果给定的key不只出现一次,这新字典将包含最后一个值。如果给出的是关键词参数,关键词和与其相关的值都将作为字典的项添加到字典中。如果一个ke既作为位置参数和作为一个关键词参数,关键词关联的值将保留在字典中。例如,下面所有返回都等价于{one:2,two:3}:dict({'one':2,'two':3})dict({'one':2,'two':3}.items())dict({'one':2,'two':3}.iteritems())dict(zip(('one','two'),(2,3)))dict([['two',3],['one',2]])dict(one=2,two=3)dict([(['one','two'][i-2],i)foriin(2,3)])版本2.2中新增.dir([object])如果没有参数,返回当前local符号表中名字的列表。如果有一个参数将尝试返回这个参数对象的有效属性。从对象的__dict__(如果定义了)属性,类或type对象收集信息。这个列表不一定是完整的。如果对象是一个模块对象,list包含模块属性的列表。如果对象是一个type或class对象,列表将包含属性的名字,同时递归其基地的属性。否则,列表将包含对象属性的名字,类属性的名字,递归若基类的属性名字。结果列表按字母顺序排序。例如:importstructdir()['__builtins__','__doc__','__name__','struct']dir(struct)['__doc__','__name__','calcsize','error','pack','unpack']注:因为dir()主要在交互提示下方便使用,它尝试提供一给有意思的名字而不是尝试提供严格的或与定义一样的名字,在relrase中它的细节行为也许会改变。divmod(a,b)用两个数字(不是复数)作为参数,返回long除法得到的商和余数组成的一对数字。使用混合的操作类型,混合的类型,将应用应用二进制算术操作。对于一般和长整数,结果与(a//b,a%b)相同。对于浮点数结果和(q,a%b)相同,q通常是math.floor(a/b),但如果是比1小,就为1.在任何情况下q*b+a%b与a很接近,如果a%b是非0的,它与b有相同的符号,同时0=abs(a%b)abs(b).enumerate(iterable)返回enumerate对象.iterable必须是一个序列,一个迭代,或者其它对象它支持迭代.enumerate()返回的iterator的next()方法返回一个元组包含一定的数目(从0开始)和从迭代中获取的对应的值。enumerate()对于获取一个索引系列很有用:(0,seq[0]),(1,seq[1]),(2,seq[2]),....版本2.3中新增.eval(expression[,globals[,locals]])该参数是一个字符串和可选的globals和locals。如果提供globals,globals必须是一个字典。如果提供locals,locals可以是任何映射对象。2.4版本修改:以前locals被要求是一个字典。expression参数是作为一个Python表达式被分析和评价(技术上来说,一个条件列表)使用globals以及locals字典作为global和local名字空间。如果提供了globals字典但没有'__builtins__',当前globals在表达式被分析前被复制到globals中。这意味着表达式可以完全访问标准__builtin__模块和受限的环境。如果locals字典省略则默认为globals字典。如果两个字典都被省略,表达式在调用eval的环境中执行。返回值是计算表达式的结果。语法错误报告为exceptions。例如:x=1printeval('x+1')2此函数也可以用来执行任意代码的对象(如compile()创建的)。在这种情况下,传入一个代码对象,而不是一个字符串。该代码对象必须已编译传给'eval'作为这种参数。提示:EXEC语句支持是动态执行语句。execfile()函数支持从一个文件中执行语句。globals()和locals()函数分别返回当前的global和local字典,这对使用eval()或execfile()很有帮助。execfile(filename[,globals[,locals]])这个功能类似于EXEC语句,但分析一个文件,而不是一个字符串。