2. 内置函数 - 1:A-H
Python解释器有一系列永远可用的内置函数,这些函数在下面以字母顺序列出.
abs(x)
返回数字的绝对值.参数可能是简单或者长整型,或者浮点数.如果参数是复数,返回它的模.
all(iterable)
返回True,如果iterable的所有元素都为true(或者iterable为空). 等价于:
def all(iterable): for element in iterable: if not element: return False return True
Python2.5新增
any(iterable)
如果iterable的任一元素为true,返回Ture.如果iterable为空则返回False.等价于:
def any(iterable): for element in iterable: if element: return True return False
Python2.5新增
basestring()
这个抽象类型是str和unicode的超类.它不能被调用或者实例化,但是可以被用来测试某个对象是否是str或者unicode的实例. isinstance(obj, basestring)等价于 isinstance(obj, (str, unicode)).
Python2.3新增
bin(x)
将整数转换为二进制字符串,结果是有效的python表达式.如果x不是Python中的整型,必须定义一个返回整型的__index__()方法.
Python2.6新增
bool([x])
转换x为布尔值,按照标准真值检测过程.如果x是flase或省略,返回False; 否则返回True. bool也是一个类,是int的子类.bool类不能再被子类化,它仅有的实例是False和True.
Python2.2.1新增
2.3版改动: 如果指明参数,该函数返回False.
callable(object)
如果对象参数可以被调用返回True,否则返回Flase.如果返回true,仍然可能调用失败,但是如果返回false,调用则永远不会成功.注意类是可调用的(调用一个类返回一个新的实例);类实例也可以被调用如果它们有__call__()方法.
chr(i)
返回整型i对应的ASCII字符.例如chr(97)返回字符'a'.这是ord()的逆函数.参数必须属于[0,255];如果超出这个范围,ValueError异常会被抛出.参看unichr().
classmethod(function)
返回function的类方法.
类方法接受类自身作为隐含的第一参数,就好像实例方法接受实例本身.声明类方法采用如下习惯:
class C: @classmethod def f(cls, arg1, arg2, ...): ...
@classmethod形式是函数修饰符 - 参考函数定义描述.
该函数可以被类调用(如C.f())或者类的实例调用(如C().f()),作为类的实例,实例将被忽略.如果一个类方法被衍生类调用,衍生类对象作为隐含的第一参数被传递.
类方法不同于C++或者Java的静态方法.如果你想要静态方法,参看本节的staticmethod()函数.
查阅标准类型层次文档可以看到更多关于类方法的信息.
2.2版本新增
2.4版本改变:增加函数修饰语法
cmp(x, y)
比较2个对象x和y,并且根据其结果返回一个整型.如果x<y返回负数;如果x==y返回0,正数如果x>y.
compile(source, filename, mode[, flags[, dont_inherit]])
编译source为代码或AST对象.代码对象可被exec语句执行或者调用eval()执行.source可以是一个字符串或者AST对象.关于如何使用AST对象,请参看ast模块文档.
参数filename指定了代码从何处读读取,如果不是从文件读入,应该传入一些可被识别的值.
参数mode指定何种代码会被编译:
exec: source包含一系列语句
eval: 单独表达式
single: 单独的交互式语句.
最后一种情况下,表达式语句会被执行,返回非None的结果并打印.
可选参数flags和dont_inherit控制哪些未来版本语句会影响source编译.如果都未指定(或者均为0),代码会连同现有的(目前包含且生效的)的未来版本语句一起编译;如果flags给定而dont_inherit没有指定(或为0),那么被flags指定的未来版本语句会被强制使用;如果dont_inherit是非零整数,则现行的未来版本语句会被忽略.
未来版本语句由位来控制,这些位联合在一起可以控制多条语句.用来指定一个给定未来版本语句的位阀可以参考__future__模块中_Feature实例的compiler_flag属性.
如果被编译的source无效,这个函数会抛出SyntaxError,如果source包含空字节,会抛出TypeError.
注意:
当用多行语句编译一个字符串是,行结束符必需由一个新行字符('\n')表示,并且输入必需由至少一个行结束符结束.如果行结束符由('\r\n')表示,可以用str.replace()替换为'\n'.
2.3版本改动: 加入flags和dont_inherit参数
2.6版本改动: 支持编译AST对象.
complex([real[, imag]])
创建一个复数,其值为 real + imag*j 或者将字符串或数字转换为复数.如果第一个参数为字符串,会被当做复数对待,不能再输入第二个参数.第二个参数永远不能字符串.每个参数可以使任意的数值类型(包括复数).如果省略imag参数,默认为0,此时该函数相当于一个数值转换函数int(), long()或者float().如果2个参数均省略,返回0j.
复数类型在数值类型中有描述 - int, float, long, complex.
delattr(object, name)
这是setattr()的近亲.参数为一个对象和一个字符串.字符串必须是该对象某一属性的名称.该函数会删除对象的对应属性,如果对象允许删除.例如delattr(x, 'foobar')等价于del x.foobar.
dict([arg])
创建一个新数据字典,其元素来自于可选参数arg.字典类型 - dict - 在影射类型中有描述.
其他容器可参看内置的列表(list),集合(set), 元组(tuple)类,或者集合(collections)模块.
dir([object])
没有参数,会返回当前局部作用域内的名称列表.如果有输入参数,会尝试返回object的有效属性列表.
如果object有名为__dir__()的方法,会调用该方法且必须返回属性列表.这样会允许用户定制对象的__getattr__()和__getattribute__()方法以改变dir()返回其属性列表.
如果object没有提供__dir__()方法,该函数会尝试从object的__dict__属性(如果存在的话)和他的类型对象收集尽可能多的信息.当object的__getattr__()方法被改写时,结果列表可能不完整,或者不准确.
dir()的默认行为根据对象类型的不同而不同,因为它总是试图返回最相关的,而非最完整的信息:
* 如果object是模块,结果包含该模块的属性的名称.
* 如果object是类,结果包含该类的属性,以及递归式回溯得到的其基类的属性.
* 否则,结果将包含object的名称,其所属类的属性的名称,和递归回溯直至其基类的属性之名称.
结果列表以字母顺序排列,例如:
>>> import struct >>> dir() # doctest: +SKIP ['__builtins__', '__doc__', '__name__', 'struct'] >>> dir(struct) # doctest: +NORMALIZE_WHITESPACE ['Struct', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into', 'unpack', 'unpack_from'] >>> class Foo(object): ... def __dir__(self): ... return ["kan", "ga", "roo"] ... >>> f = Foo() >>> dir(f) ['ga', 'kan', 'roo']
注意:
由于dir()主要是为了在交互式命令提示符下提供方便,所以它会尝试返回一系列有意义的名称集合,而并非最完整或者定义一致的名称集合.而且其具体的机制也会根据发行版本不同而不同.例如,当参数是一个类时,元类属性不会出现在结果列表中.
divmod(a, b)
返回2个数(非复数)的商和余数(使用长除法).对于混合操作数类型,会应用二元算术运算规则.对于整型和长整形,结果与(a // b, a % b)相同;对于浮点数,结果等价于(q, a % b),其中q等于常用的除法math.floor(a / b)但是可能会比这个结果少1. 无论在何种情况之下, q * b + a % b都跟a非常接近, 如果a % b结果非零,则结果与b的符号相同,并且0 <= abs(a % b) < abs(b).
2.3版本改动:弃用复数的divmod().
enumerate(sequence[, start=0])
返回枚举对象.sequence必须是一个序列,迭代器或者其他支持迭代的对象.由enumerate()返回的迭代器的next()方法,将返回一个包含计数器(默认从0开始)和对应值的元组.enumerate()对于获得有索引的序列非常有效: (0, seq[0]), (1, seq[1]), (2, seq[2]), ... 例如:
>>> for i, season in enumerate(['Spring', 'Summer', 'Fall', 'Winter']): ... print i, season 0 Spring 1 Summer 2 Fall 3 Winter
2.3版本新增.
2.6版本改动: 新增start参数.
eval(expression[, globals[, locals]])
参数为一个字符串,可选参数包括globals和locals.如果提供了可选参数,globals必须是一个字典,locals可以是任意的映射对象.
2.4改动: locals正式要求为一个字典.
expression参数被当做Python表达式(技术上来讲,是条件列表)分析和执行,globals和locals会作为全局和局部命名空间.如果globals字典存在并缺少__builtins__,当前的globals会在表达式被分析前复制到globals.这意味着expression一般对标准的__builtin__模块拥有完全访问权限,限制环境也会被遗传.如果locals字典被省略,它默认等于globals字典.如果均被省略,expression会在调用eval()的环境下被执行.返回值是执行expression的记过.语法错误会作为异常报告.例如:
>>> x = 1 >>> print eval('x+1') 2
这个函数也可以被用来执行任意的代码对象(例如由compile()创建的).在这种情况下,要传递一个代码对象而不是字符串.如果代码对象已经被exec作为kind参数编译,eval()将返回None.
提示:exec语句支持动态执行语句,execfile()函数支持动态执行文件.globals()和locals()将相应的返回当前全局和局部字典,这些参数可以传递给eval()或execfile().
execfile(filename[, globals[, locals]])
该函数类似于exec语句,唯一的区别就是分析一个文件而非字符串.但由于它不使用模块管理,所以不同于import语句 - 它无条件读取一个文件而且不会创建一个新的模块.-脚注1-
参数包含文件名和2个可选的字典.文件会以globals和locals作为全局和局部命名空间,当做一系列Python语句(类似于模块)被分析和执行.如果有locals参数,它可以使任意的映射对象.
2.4版本改动:正式要求locals是一个字典.
如果locals字典被省略,默认等于globals字典.如果都被省略,该函数会在execfile()被调用的环境下执行,返回值是None.
注意:
默认的locals()函数的行为如下:
一般不应尝试修改默认的locals字典.如果你需要看到局部代码被execfile()执行后返回的效果,可以传递一个明确的locals字典.使用execfile()修改函数的locals参数是不可信的.
file(filename[, mode[, bufsize]])
文件类型的构造函数,在文件对象一节有详细描述.构造器的参数与下面描述的内置函数open()相同.
当打开一个文件时,最好使用open()而不是直接调用此构造函数.file更适合被用来做类型测试(例如,isinstance(f, file)).
2.2版本新增
filter(function, iterable)
构造一个列表,其元素是以iterable的元素为参数执行function时返回true的元素.iterable必须是序列,支持迭代的容器或者迭代器.如果iterable是一个字符串或者元组,结果也是相应的类型;否则永远是列表.如果function是None,则认为是恒等函数,则iterable的所有是false的元素会被删除.
注意:如果function不是None,filter(function, iterable)等价于[item for item in iterable if function(item)];如果function是None,则它等价于[item for item in iterable if item].
参考它的互补函数itertools.filterfalse(),该函数会返回以iterable的元素为参数执行function时返回false的元素.
float([x])
将一个字符串或者数字转换为浮点数.如果参数是字符串,则必须包含白空格的有正负号的十进制或者浮点数.参数也可以是[+|-]nan或者[+|-]inf.否则,参数可能是整型,长整形或者浮点数,会返回一个等值的浮点数(在Python的浮点数精度下).如果无参数,返回0.0.
注意:
当传递一个字符串时,可能返回NaN或者Infinity,这依赖于底层的C库函数.对于NaN,float接受字符串nan, inf和-inf;对于infinity,有正无穷和负无穷.对于NaN来说,+和-会被忽略,float永远将NaN和infinity表示为nan, inf和-inf.
浮点类型在数值类型一节有详细描述 - int, float, long, complex.
format(value[, format_spec])
将value转换为由format_spec指定的格式化表达方式.其中format_spec取决于value参数的类型.但是,仍然有一个被大部分内置类型采用的标准格式化语法:格式化简短说明(参看8.1.3.1)
注意:format(value, format_spec)只不过是调用value.__format__(format_spec)而已.
2.6新增
frozenset([iterable])
返回一个frozenset类型,如果有可选参数iterable,元素来自于iterable.frozenset类型的说明参看集合类型 - Set, frozenset(参考6.7).
其他的容器参考内置类dict, list, tuple和collections模块.
2.4版本新增
getattr(object, name[, default])
返回对象的对应属性的值.name必须是字符串.如果该字符串是object某一属性的名称,返回该属性的值.例如getattr(x, 'foobar')等价于x.foobar.如果该属性不存在,返回default.如果未提供default参数,抛出AttributeError异常.
globals()
以字典形式返回当前全局符号表,结果永远是当前模块的字典(在一个函数或者方法内部,是它被定义的模块,而非调用它的模块).
hasattr(object, name)
参数是一个对象和一个字符串.如果字符串是对象的某个属性名称返回True,否则返回False.(另一个办法是调用getattr(object, name)看它是否抛出异常.)
hash(object)
返回object的哈希值(如果有).哈希值是整数,在搜索字典时被用来快速比较字典键值.相同的数值拥有相同的哈希值(即使它们类型不同,例如1和1.0).
help([object])
调用内置的帮助系统.(该函数主要用于交互式环境)如果未指明参数,解释器命令行的交互式帮助系统会.如果参数是字符串,会以该字符串为名称搜索模块,函数,类,方法,关键字或者文档题目,然后打印帮助页面.如果参数是其他任意对象,会生成关于该对象的帮助页面.
该函数被site模块加入内置命名空间.
2.2版本新增
hex(x)
将一个整数(任意大小)转换为十六进制字符串,结果是一个有效的Python表达式.
注意:
如果要得到浮点数的十六进制字符串表达式,可以用float.hex()方法.
2.4版本改动:正式只返回无符号表达式
<<1. 简介 >>目录 >>2. 内置函数-2:I-R
No comments :
Post a Comment