[python学习篇][书籍学习][python standrad library][内建函数]之[all,any,basestring,isinstance,bin,bool,@classmethod,@staticmethod,cmp,enumerate
Python 解释器内置了一些函数,它们总是可用的。这里将它们按字母表顺序列出。
如果iterable的所有元素为真(或者iterable为空), 返回True。
如果iterable的所有元素为真(或者iterable为空), 返回True。等同于:
def all(iterable):
for element in iterable:
if not element:
return False
return True
>>> help(all) Help on built-in function all in module __builtin__: all(...) all(iterable) -> bool Return True if bool(x) is True for all values x in the iterable. If the iterable is empty, return True. >>> listMy = ['abc','abd'] >>> all(listMy) True >>> listMy.append(False) >>> all(listMy) False
any(iterable)
如果iterable的任一元素为真,返回True。如果iterable为空,返回False。
>>> listMy = ['abc','abd'] >>> any(listMy) True >>> listMy.append(False) >>> any(listMy) True
basestring() 用来测试一个对象是否为字符串或者u字符串
这个抽象类型是str和unicode的超类。 它不能被调用或者实例化,但是可以用来测试一个对象是否是str或者unicode的实例。 isinstance(obj, basestring)等同于isinstance(obj, (str, unicode))。
>>> isinstance(listMy, basestring) False >>> isintance('abc', basestring) Traceback (most recent call last): File "<pyshell#24>", line 1, in <module> isintance('abc', basestring) NameError: name 'isintance' is not defined >>> isinstance('abc', basestring) True >>> isinstance(u"准哦功能", basestring) True >>> isinstance(123, basestring) False
bin(x),
将一个整数转化成一个二进制字符串。结果是一个合法的Python表达式。如果x不是一个Python int对象,它必须定义一个返回整数的__index__()方法。
bool([x])
将一个值转化成布尔值,使用标准的真值测试例程。如果x为假或者没有参数,它返回False;否则它返回True。bool也是一个类,它是int的子类。bool不能被继承。它唯一的实例就是False和True。
>>> bin(2) '0b10' >>> bin(4) '0b100' >>> bool(1) True >>> bool(2) True
chr(i)
返回一个单字符字符串,字符的ASCII码为整数i。例如,chr(97)返回字符串'a'。 它是ord()的逆运算。参数的取值范围为[0..255]的闭区间;如果i超出取值范围,抛出ValueError。参见unichr()。
>>> chr(97) 'a' >>> ord('a') 97
classmethod(function)
将function包装成类方法。
类方法接受类作为隐式的第一个参数,就像实例方法接受实例作为隐式的第一个参数一样。声明一个类方法,使用这样的惯例:
class C(object):
@classmethod
def f(cls, arg1, arg2, ...):
...
@classmethod是函数decorator(装饰器)参见Function definitions中的函数定义。
它即可以通过类来调用(如C.f()),也可以通过实例来调用(如C().f())。除了实例的类,实例本身被忽略。如果在子类上调用类方法,子类对象被传递为隐式的第一个参数。
类方法不同于C++或Java中的静态方法。如果你希望静态方法,参见这节的staticmethod()。
#coding=utf-8 class C(object): @classmethod def f(cls, arg1, arg2): print arg1,arg2 C.f(1,2) C().f(2,3) # 1 2 # 2 3
返回function的一个静态方法。
静态方法不接受隐式的第一个参数(也就是实例名称self)。要声明静态方法,请使用下面的习惯方式:
class C(object):
@staticmethod
def f(arg1, arg2, ...):
...
@staticmethod形式是一个函数装饰器 – 细节请参阅函数定义中函数定义的描述。
它既可以在类上调用(例如C.f())也可以在实例上调用(例如C().f())。除了它的类型,实例其他的内容都被忽略。
#coding=utf-8 class C(object): @staticmethod def s(arg1, arg2): print arg1,arg2 C.s(1,2) C().s(2,3) # 1 2 # 2 3
cmp(x, y)
比较两个对象x和y,根据结果返回一个整数。如果x < y,返回负数;如果x == y,返回0;如果x > y,返回正数。
>>> cmp('a','b') -1 >>> cmp(1,2) -1 >>> cmp('a',2) 1 >>> lista=[1,2] >>> listb=[2] >>> cmp(lista,listb) -1 >>> cmp(1.20,1.22) -1 >>> cmp(1.23,1.2) 1
enumerate(sequence, start=0)
返回一个枚举对象。sequence必须是序列或迭代器iterator,或者支持迭代的对象。enumerate()返回的迭代器的next()方法返回一个元组,它包含一个计数(从start开始,默认为0)和从sequence中迭代得到的值:
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons, start=1)) [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')] 等同于: def enumerate(sequence, start=0): n = start for elem in sequence: yield n, elem n += 1
如果参数object 是参数classinfo 的一个实例;或者是其一个(直接的、间接的或者virtual)子类的实例,返回真。如果classinfo是类型对象(新式类)而object是该类型对象;或者是其子类(直接的,间接的,或者virtual),返回真。如果object不是给定类型的类实例或者对象,该函数总是返回假。如果classinfo既不是类对象,也不是类型对象,它可以是类/类型对象的元组,或者递归包含这样的元组(不接受其它的序列类型)。如果classinfo不是类,类型,类/类型的元组,抛出TypeError异常。
issubclass(class, classinfo)
如果class是classinfo的子类(直接的,间接的,或者virtual) ,返回真。一个类被认为是它自己的子类。classinfo可以是类对象的元组,这时classinfo中的每个类对象都会被检查。其它情况下,抛出TypeError异常。