内建函数2
2010年10月09日
33. max(s,[,args…])
当仅给定一个参数时,max()函数返回序列s的最大值。当给定一列参数时,max()函数返回给定参数的最大参数
34. min(s[,args…])
当仅给定一个参数时,min()函数返回序列s的最小值。当给定一列参数时,min()函数返回给定参数中的最小值。记住:多参数调用的序列不被遍历,每个列表参数作为一个整体进行比较,如:
min([1,2,3],[4,5,6])
返回
[1,2,3]
而不是通常所想的结果为1,要得到一个或多个列表中元素的最小值,可将所有列表连成一串,如下所示:
min([1,2,3]+[4,5,6])
35. oct(x)
该函数将整数转换为八进制字符串。其结果是个有效的python表达式,如下例所示:
>>>oct(2001)
‘03721’
请注意,返回值通常是无符号数。这样致使oct(-1)在32位机器上产生’037777777777’的结果
36. open(filename[,mode[,bufsize]])
open()函数通过使用mode和缓存bufsize类型来打开filename标识的文件。此函数返一文件对象
其中mode与系统函数fopen()使用的模式相同。如果mode参数省略,其默认取值为r
模式 含义
r 打开用于读
w 打开用于写
a 打开用于附加(打开期间,文件位置自动移到文件末尾)
r+ 打开用于更新(读和写)
w+ 截断(或清空)文件,接着打开文件用于读写
a+ 打开文件用于读和写,并自动改变当前为止到文件尾
当附加任何模式选项时,以二进制模式而不是文本模式,打开文件(这种模式
b 仅对windows、dos和其他一些操作系统有效,对Unix、MacOS和BeOS则不管选项为何值,以二进制模式对待所有文件)
open()函数的bufsize选项参数决定从文件中读取数据时所使用的缓存的大小,如果bufsize省略,就使用系统默认的缓存容量
bufsize值 说明
禁用缓存
行缓存
>1 使用大小近似为bufsize字符长度的缓存
不能用给定参数值的类型表示,则引发异常,比如,以下对pow()的调用将失败:
pow(2,-1)
但是
pow(2.0,-1)
是有效的
39. range([start,]stop[,step])
该函数返回数值列表,该数值列表从start开始,以step为步长,于stop之前结束。所有的数字都应列出,并且以普通整型数返回。如果step省略,则默认取1.如果start省略,则从0开始求值。如果以两个参数形式调用,则认作给定的参数是start和stop,如果要定义步长就必须给出全部的三个参数。下面对range()函数的调用使用了值为正数的步长step:
>>>range(5,25,5)
[5,10,15,20]
请注意,最后的数值是stop减去step,range()函数的返回值从小递增到大,趋近stop的值,但不包含stop这个值
如果step的给定值是负数,range()函数的返回值从大递增到小,而不是递增,stop必须比stop小;否则返回的列表为空。下列说明了step取值为负数的运用情况:
>>>range(10,0,-1)
[10,9,8,7,6,5,4,3,2,1]
>>>range(25,0,-5)
[25,20,15,10,5]
>>>range(0,10,-1)
[]
40. raw_input([prompt])
该函数从sys.stdin接受原始输入并返回字符串。输入以换行符为结束,其中换行符在输入字符串返回给调用者之前被去除。如果给出prompt,末尾不含换行符的prompt就被写到sys.stdout中,并用作输入的提示,如下例所示:
>>>name=raw_input(‘Name?’)
Name?Martin
如果已加载readline模块,则诸如行编辑和历史记录的特性在输入期间就得到支持
41. reduce(function,sequence[,initializer])
该函数一次应用function(支持两个函数)到sequence中的每个元素上,逐渐缩短整个语句直到为一个单一的值。举例,下面的语句模拟了算术运算符“!”:
reduce(lambda x,y:x*y,[1,2,3,4,5])
其结果如同执行以下计算一样:
((((1*2)*3)*4)*5)
结果等于120
如果给出initializer参数值,则initializer参数值就被用作序列的第一个元素,如下列所示:
>>>reduce(lambda x,y:x*y,[1,2,3,4,5],10)
1200
42. reload(module)
reload()函数将以前导入过的模块再加载一次。重新加载(reload)包括最初导入模块是应用的分析过程和初始化过程。这样就允许在不退出解释器的情况重新加载已更改的python模块。
使用reload()函数的若干注意事项如下:
*如果模块在语法上是正确的,但在初始化过程中失败,则导入过程不能正确地将模块的名字绑定到符号表中,这时,必须在模块能被重新加载之前使用import()函数加载该模块。
*重新加载的模块不删除最初旧版本在符号表中的登记项。对于有恒定名字的对象和函数,这当然不是问题;但是,若对一模块实体更改了名字,模块名在重新加载后仍保持在符号表中
*支持扩展模块(它依赖与内置的或所支持的动态加载的函数库)的重新加载,但可能是无目标的,并且确定可能导致失败,这完全依赖于动态加载的函数库的行为
*如果以模块利用from…import…方式从另一个模块导入对象,reload()函数不重定义导入的对象,可利用import…形式避免这个问题
*提供类的重新加载模块不影响所提供类的任何已存实例――已存实例将继续使用原来的方法定义;只有该类的新实例使用新格式。这个原则对派生类同样适用
43. repr(object)
repr()函数返回对象的字符串表示。这与将对象或属性适用单反引号(‘)的结果是一致的。返回的字符串产生一个对象,该对象的值与将object传递给eval()函数产生的值一样,如下例所示:
>>>dict={‘One’:1,’Two:2’,’Many’:{‘Many’:4,’ManyMany’:8}}
>>>repr(dict)
“{‘One’:1,’Many’:{‘Many’:4,’ManyMany’:8},’Two’:2}”
44. round(x[,n])
round()函数返回浮点型参数x舍入到十进制小数点后n位的值,如下例所示:
>>>round(0.4)
0.0
>>>round(0.5)
1.0
>>>round(-0.5)
-1.0
>>>round(1985,-2)
2000.0
45. setattr(object,name,value)
该函数将object参数的name属性设置为value参数值。setattr()函数是getattr()函数的反函数,后者仅获得信息,以下语句:
setattr(myattr’,’new value’)
等价于
myobj.myattr=’new value’
setattr()函数能用在这样的情况下:属性是通过name参数以编程方式命名,而不是显式地命名属性
46. slice([start,]stop,[,step])
该函数返回已序列切片(slice)对象,该对象表示由range(start,stop,step)指定的索引集。如果给出一个参数,此参数就作为stop参数值;如果给出两个参数,它们就作为start和stop的参数值;任何未给出参数值的参数默认取值为None。序列切片对象有3个属性(start,stop,和step),这3个属性仅仅返回要提供给slice()函数的参数
47. str(object)
返回对象的一个字符串表示。这与repr()函数相似,唯一不同之处在于:此函数返回值设计为可打印字符串而不是与eval()函数相兼容的字符串
48. tuple(object)
tuple()函数返回一个元组,该元组的项及项的顺序与sequence参数完全一样,以下就是tuple()函数的举例:
>>>tuple(‘abc’)
(‘a’,’b’,’c’)
>>>tuple([1,2,3])
(1,2,3)
49. type(object)
该函数返回object参数的类型。返回值是个如类型模块所描述一样的类型对象,举例如下:
>>>import type
>>>if type(string)==type.StringType:
print ‘This is a string’
50. unichr(i)
该函数返回代码是一个整型参数i的Unicode字符的Unicode字符串。此函数等价于前面论述的chr()函数。请注意,要将Unicode字符转换回其整数格式,可使用ord()函数;没有uniord()函数、如果给出的整数超出0~65535这个范围,则引发ValueError异常
51. unicode(string[,encoding[,errors]]))
该函数利用编码格式解码器将给定的字符串从一种格式解码为另一种格式。编码的任何错误都用errors参数定义的字符串标记
此函数特别用于在字符串和Unicode编码格式之间转换。默认(当不给出encoding参数值)操作是以严格方式将字符串解码为UTF-8格式,发生errors错误时就引发ValueError异常。有关合适的解码列表,请见codecs模块
52.vars([object])
该函数返回对应于当前局部符号表的字典。当给出模块、类或实例时,vars()函数返回对应那个对象的符号表的字典。因为结果是非定义的,所以一定不要修改返回的字典
53. xrange([start,]stop[,step])
该函数的作用与range()函数一样,唯一的区别是:xrange()函数返回一个xrange对象。xrange()对象是个不透明对象类型,此类型返回的信息与所请求的参数列表是一致的,但是它不必存储列表中每个独立的元素。在创建非常巨大列表的情况下,此函数特别有用;利用xrange()函数节省下来的内存比起用range()函数是相当可观的
54. zip(seq1,…)
zip()函数处理一系列序列,将这些序列返回一个元组列表。其中,每个元组包含了给定的每个序列的第n个元素。以下是个例子:
>>>a=[1,2,3,4]
>>>b=[5,6,7,8]
>>>zip(a,b)
[(1,5),(2,6),(3,7),(4,8)]
55. 执行任意语句
python支持3条指令,这3条指令允许执行一些任意文件或python代码的字符串,这3条指令是exec语句、execfile()和eval()函数。
56. exec语句
exec语句被设计为执行能使用函数和语句的任意组合的python的任何代码片段。执行的代码访问相同的全局定义和局部定义的对象、类和方法或函数。以下是使用exec语句的简单例子:
exec “print ‘Hello World’”
也能通过提供一个包含对象及其取值的列表的字典来限定对exec语句有效的资源,如下例这样:
exec “print message” in myglobals,mylocals
能用globals()和locals()函数来获得当前的字典
请注意,exec语句执行表达式和语句、或者对表达式和语句求值,但是exec语句不返回任何值。因为exec是语句不是函数,所以任何获取返回值的试图都将导致语法错误
57. execfile()函数
该函数执行与exec语句同样的操作,正如前面所描述的那样,它们的不同之处在于:execfile()函数从问几十年中读取被执行的语句,执行的对象不是字符串,不是代码对象;execfile()函数的其他所有方面都与exec语句等价
58. eval()函数
该函数不允许执行任意的python语句。eval()函数被设计为:执行一个python表达式,并返回值,如下例中一样:
result=eval(userexpression)
或者在语句中更显式地给出表达式,如下例所示:
result=eval(“3+6”)
不能使用eval()函数去执行语句,根据经验,通常使用eval()函数开将一表达式求值并返回一个值,而在其他所有情况下则使用exec语句
exec()
2010年10月09日
33. max(s,[,args…])
当仅给定一个参数时,max()函数返回序列s的最大值。当给定一列参数时,max()函数返回给定参数的最大参数
34. min(s[,args…])
当仅给定一个参数时,min()函数返回序列s的最小值。当给定一列参数时,min()函数返回给定参数中的最小值。记住:多参数调用的序列不被遍历,每个列表参数作为一个整体进行比较,如:
min([1,2,3],[4,5,6])
返回
[1,2,3]
而不是通常所想的结果为1,要得到一个或多个列表中元素的最小值,可将所有列表连成一串,如下所示:
min([1,2,3]+[4,5,6])
35. oct(x)
该函数将整数转换为八进制字符串。其结果是个有效的python表达式,如下例所示:
>>>oct(2001)
‘03721’
请注意,返回值通常是无符号数。这样致使oct(-1)在32位机器上产生’037777777777’的结果
36. open(filename[,mode[,bufsize]])
open()函数通过使用mode和缓存bufsize类型来打开filename标识的文件。此函数返一文件对象
其中mode与系统函数fopen()使用的模式相同。如果mode参数省略,其默认取值为r
模式 含义
r 打开用于读
w 打开用于写
a 打开用于附加(打开期间,文件位置自动移到文件末尾)
r+ 打开用于更新(读和写)
w+ 截断(或清空)文件,接着打开文件用于读写
a+ 打开文件用于读和写,并自动改变当前为止到文件尾
当附加任何模式选项时,以二进制模式而不是文本模式,打开文件(这种模式
b 仅对windows、dos和其他一些操作系统有效,对Unix、MacOS和BeOS则不管选项为何值,以二进制模式对待所有文件)
open()函数的bufsize选项参数决定从文件中读取数据时所使用的缓存的大小,如果bufsize省略,就使用系统默认的缓存容量
bufsize值 说明
禁用缓存
行缓存
>1 使用大小近似为bufsize字符长度的缓存
不能用给定参数值的类型表示,则引发异常,比如,以下对pow()的调用将失败:
pow(2,-1)
但是
pow(2.0,-1)
是有效的
39. range([start,]stop[,step])
该函数返回数值列表,该数值列表从start开始,以step为步长,于stop之前结束。所有的数字都应列出,并且以普通整型数返回。如果step省略,则默认取1.如果start省略,则从0开始求值。如果以两个参数形式调用,则认作给定的参数是start和stop,如果要定义步长就必须给出全部的三个参数。下面对range()函数的调用使用了值为正数的步长step:
>>>range(5,25,5)
[5,10,15,20]
请注意,最后的数值是stop减去step,range()函数的返回值从小递增到大,趋近stop的值,但不包含stop这个值
如果step的给定值是负数,range()函数的返回值从大递增到小,而不是递增,stop必须比stop小;否则返回的列表为空。下列说明了step取值为负数的运用情况:
>>>range(10,0,-1)
[10,9,8,7,6,5,4,3,2,1]
>>>range(25,0,-5)
[25,20,15,10,5]
>>>range(0,10,-1)
[]
40. raw_input([prompt])
该函数从sys.stdin接受原始输入并返回字符串。输入以换行符为结束,其中换行符在输入字符串返回给调用者之前被去除。如果给出prompt,末尾不含换行符的prompt就被写到sys.stdout中,并用作输入的提示,如下例所示:
>>>name=raw_input(‘Name?’)
Name?Martin
如果已加载readline模块,则诸如行编辑和历史记录的特性在输入期间就得到支持
41. reduce(function,sequence[,initializer])
该函数一次应用function(支持两个函数)到sequence中的每个元素上,逐渐缩短整个语句直到为一个单一的值。举例,下面的语句模拟了算术运算符“!”:
reduce(lambda x,y:x*y,[1,2,3,4,5])
其结果如同执行以下计算一样:
((((1*2)*3)*4)*5)
结果等于120
如果给出initializer参数值,则initializer参数值就被用作序列的第一个元素,如下列所示:
>>>reduce(lambda x,y:x*y,[1,2,3,4,5],10)
1200
42. reload(module)
reload()函数将以前导入过的模块再加载一次。重新加载(reload)包括最初导入模块是应用的分析过程和初始化过程。这样就允许在不退出解释器的情况重新加载已更改的python模块。
使用reload()函数的若干注意事项如下:
*如果模块在语法上是正确的,但在初始化过程中失败,则导入过程不能正确地将模块的名字绑定到符号表中,这时,必须在模块能被重新加载之前使用import()函数加载该模块。
*重新加载的模块不删除最初旧版本在符号表中的登记项。对于有恒定名字的对象和函数,这当然不是问题;但是,若对一模块实体更改了名字,模块名在重新加载后仍保持在符号表中
*支持扩展模块(它依赖与内置的或所支持的动态加载的函数库)的重新加载,但可能是无目标的,并且确定可能导致失败,这完全依赖于动态加载的函数库的行为
*如果以模块利用from…import…方式从另一个模块导入对象,reload()函数不重定义导入的对象,可利用import…形式避免这个问题
*提供类的重新加载模块不影响所提供类的任何已存实例――已存实例将继续使用原来的方法定义;只有该类的新实例使用新格式。这个原则对派生类同样适用
43. repr(object)
repr()函数返回对象的字符串表示。这与将对象或属性适用单反引号(‘)的结果是一致的。返回的字符串产生一个对象,该对象的值与将object传递给eval()函数产生的值一样,如下例所示:
>>>dict={‘One’:1,’Two:2’,’Many’:{‘Many’:4,’ManyMany’:8}}
>>>repr(dict)
“{‘One’:1,’Many’:{‘Many’:4,’ManyMany’:8},’Two’:2}”
44. round(x[,n])
round()函数返回浮点型参数x舍入到十进制小数点后n位的值,如下例所示:
>>>round(0.4)
0.0
>>>round(0.5)
1.0
>>>round(-0.5)
-1.0
>>>round(1985,-2)
2000.0
45. setattr(object,name,value)
该函数将object参数的name属性设置为value参数值。setattr()函数是getattr()函数的反函数,后者仅获得信息,以下语句:
setattr(myattr’,’new value’)
等价于
myobj.myattr=’new value’
setattr()函数能用在这样的情况下:属性是通过name参数以编程方式命名,而不是显式地命名属性
46. slice([start,]stop,[,step])
该函数返回已序列切片(slice)对象,该对象表示由range(start,stop,step)指定的索引集。如果给出一个参数,此参数就作为stop参数值;如果给出两个参数,它们就作为start和stop的参数值;任何未给出参数值的参数默认取值为None。序列切片对象有3个属性(start,stop,和step),这3个属性仅仅返回要提供给slice()函数的参数
47. str(object)
返回对象的一个字符串表示。这与repr()函数相似,唯一不同之处在于:此函数返回值设计为可打印字符串而不是与eval()函数相兼容的字符串
48. tuple(object)
tuple()函数返回一个元组,该元组的项及项的顺序与sequence参数完全一样,以下就是tuple()函数的举例:
>>>tuple(‘abc’)
(‘a’,’b’,’c’)
>>>tuple([1,2,3])
(1,2,3)
49. type(object)
该函数返回object参数的类型。返回值是个如类型模块所描述一样的类型对象,举例如下:
>>>import type
>>>if type(string)==type.StringType:
print ‘This is a string’
50. unichr(i)
该函数返回代码是一个整型参数i的Unicode字符的Unicode字符串。此函数等价于前面论述的chr()函数。请注意,要将Unicode字符转换回其整数格式,可使用ord()函数;没有uniord()函数、如果给出的整数超出0~65535这个范围,则引发ValueError异常
51. unicode(string[,encoding[,errors]]))
该函数利用编码格式解码器将给定的字符串从一种格式解码为另一种格式。编码的任何错误都用errors参数定义的字符串标记
此函数特别用于在字符串和Unicode编码格式之间转换。默认(当不给出encoding参数值)操作是以严格方式将字符串解码为UTF-8格式,发生errors错误时就引发ValueError异常。有关合适的解码列表,请见codecs模块
52.vars([object])
该函数返回对应于当前局部符号表的字典。当给出模块、类或实例时,vars()函数返回对应那个对象的符号表的字典。因为结果是非定义的,所以一定不要修改返回的字典
53. xrange([start,]stop[,step])
该函数的作用与range()函数一样,唯一的区别是:xrange()函数返回一个xrange对象。xrange()对象是个不透明对象类型,此类型返回的信息与所请求的参数列表是一致的,但是它不必存储列表中每个独立的元素。在创建非常巨大列表的情况下,此函数特别有用;利用xrange()函数节省下来的内存比起用range()函数是相当可观的
54. zip(seq1,…)
zip()函数处理一系列序列,将这些序列返回一个元组列表。其中,每个元组包含了给定的每个序列的第n个元素。以下是个例子:
>>>a=[1,2,3,4]
>>>b=[5,6,7,8]
>>>zip(a,b)
[(1,5),(2,6),(3,7),(4,8)]
55. 执行任意语句
python支持3条指令,这3条指令允许执行一些任意文件或python代码的字符串,这3条指令是exec语句、execfile()和eval()函数。
56. exec语句
exec语句被设计为执行能使用函数和语句的任意组合的python的任何代码片段。执行的代码访问相同的全局定义和局部定义的对象、类和方法或函数。以下是使用exec语句的简单例子:
exec “print ‘Hello World’”
也能通过提供一个包含对象及其取值的列表的字典来限定对exec语句有效的资源,如下例这样:
exec “print message” in myglobals,mylocals
能用globals()和locals()函数来获得当前的字典
请注意,exec语句执行表达式和语句、或者对表达式和语句求值,但是exec语句不返回任何值。因为exec是语句不是函数,所以任何获取返回值的试图都将导致语法错误
57. execfile()函数
该函数执行与exec语句同样的操作,正如前面所描述的那样,它们的不同之处在于:execfile()函数从问几十年中读取被执行的语句,执行的对象不是字符串,不是代码对象;execfile()函数的其他所有方面都与exec语句等价
58. eval()函数
该函数不允许执行任意的python语句。eval()函数被设计为:执行一个python表达式,并返回值,如下例中一样:
result=eval(userexpression)
或者在语句中更显式地给出表达式,如下例所示:
result=eval(“3+6”)
不能使用eval()函数去执行语句,根据经验,通常使用eval()函数开将一表达式求值并返回一个值,而在其他所有情况下则使用exec语句
exec()