25 Nov 2009

Python标准库手册 - 2. 内置函数 - 1

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