1. abs(x)
abs()函數(shù)返回數(shù)字(可為普通型靡狞、長整型或浮點型)的絕對值瞬场。如果給出復數(shù)芬为,返回值就是該復數(shù)的模腾节。例如:
>>>print abs(-2,4)
2.4
>>>print abs(4+2j)
4.472135955
2. apply(function,args[,keywords])
apply()函數(shù)將args參數(shù)應用到function上。function參數(shù)必須是可調(diào)用對象(函數(shù)崭捍、方法或其他可調(diào)用對象)尸折。args參數(shù)必須以序列
形式給出。列表在應用之前被轉(zhuǎn)換為元組殷蛇。function對象在被調(diào)用時实夹,將args列表的內(nèi)容分別作為獨立的參數(shù)看待橄浓。例如:
apply(add,(1,3,4))
等價于
add(1,3,4)
在以列表或元組定義了一列參數(shù),且需要將此列表參數(shù)分別作為個個獨立參數(shù)使用的情況下亮航,必須使用apply()函數(shù)荸实。在要把變長參數(shù)列
應用到已函數(shù)上時,apply()函數(shù)非常有用缴淋。
可選項keywords參數(shù)應是個字典准给,字典的關(guān)鍵字是字符串。這些字符串在apply()函數(shù)的參數(shù)列末尾處給出重抖,它們將被用作關(guān)鍵字參數(shù)露氮。
3. buffer(object[,offset[,size]])
如果object對象支持緩存調(diào)用接口buffer()函數(shù)就為object對象創(chuàng)建一個新緩存。這樣的對象包括字符串钟沛、數(shù)組和緩存畔规。該新緩存通過使
用從offset參數(shù)值開始知道該對象末尾的存儲片段或從offset參數(shù)值開始直到size參數(shù)給出的尺寸為長度的存儲片段來引用object對象。如果
沒給出任何選項參數(shù)讹剔,緩存區(qū)域就覆蓋整個序列油讯,最終得到的緩存對象是object對象數(shù)據(jù)的只讀拷貝。
緩存對象用于給某個對象類型創(chuàng)建一個更友好的接口延欠。比如陌兑,字符串對象類型通用緩存對象而變得可用,允許逐個字節(jié)地訪問字符串中的信息由捎。
4. callable(object)
callable()函數(shù)在object對象是可調(diào)用對象的情況下兔综,返回真(true);否則假(false)狞玛,可調(diào)用對象包括函數(shù)软驰、方法、代碼對象心肪、類(在調(diào)用時返回新的實例)和已經(jīng)定義‘調(diào)用’方法的類實例
5. chr(i)
chr()函數(shù)返回與ASCII碼i相匹配的一個單一字符串锭亏,如下例所示:
>>>print chr(72)+chr(101)+chr(108)+chr(111)
hello
chr()函數(shù)是ord()函數(shù)的反函數(shù),其中ord()函數(shù)將字符串轉(zhuǎn)換回ASCII整數(shù)碼硬鞍,參數(shù)i的取值應在0~255范圍內(nèi)慧瘤。如果參數(shù)i的取值在此范圍之外,將引發(fā)ValueError異常固该。
6. cmp(x,y)
cmp()函數(shù)比較x和y這兩個對象锅减,且根據(jù)比較結(jié)果返回一個整數(shù)。如果xy伐坏,則返回正數(shù)怔匣。請注意,此函數(shù)特別用來比較數(shù)值大小桦沉,而不是任何引用關(guān)系每瞒,因而有下面的結(jié)果:
>>>a=99
>>>b=int('99')
>>>cmp(a,b)
0
7. coerce(x,y)
coerce()函數(shù)返回一個元組金闽,該元組由兩個數(shù)值型參數(shù)組成。此函數(shù)將兩個數(shù)值型參數(shù)轉(zhuǎn)換為同一類型數(shù)字剿骨,其轉(zhuǎn)換規(guī)則與算術(shù)轉(zhuǎn)換規(guī)則一樣呐矾。一下是兩個例子:
>>>a=1
>>>b=1.2
>>>coerce(a,b)
(1.0,1.2)
>>>a=1+2j
>>>b=4.3e10
>>>coerce(a,b)
((1+2j),(43000000000+0j))
8. compile(string,filename,kind)
compile()函數(shù)將string編譯為代碼對象,編譯生成的代碼對象接下來被exec語句執(zhí)行懦砂,接著能利用eval()函數(shù)對其進行求值。filename參數(shù)應是代碼從其中讀出的文件名组橄。如果內(nèi)部生成文件名荞膘,filename參數(shù)值應是相應的標識符。kind參數(shù)指定string參數(shù)中所含代碼的類別玉工,有關(guān)kind可能取值的詳細信息羽资,請參見表8-1
舉例如下:
>>>a=compile(‘print “Hello World”’,’’,’single’)
>>>exec(a)
Hello World
>>>eval(a)
Hello World
表 由compile()函數(shù)編譯的代碼的類別
Kind取值編譯生成的代碼
exec語句序列
eval簡單表達式
Single簡單交互語句
9. complex(real,[image])
Complex()函數(shù)返回一個復數(shù),其實部為real參數(shù)值遵班。如果給出image參數(shù)的值屠升,則虛部就為image;如果默認image參數(shù)狭郑,則虛部為0j腹暖。
10. delattr(object,name)
delattr()函數(shù)在object對象許可時,刪除object對象的name屬性翰萨,此函數(shù)等價于如下語句:
del object.attr
而delattr()函數(shù)允許利用編程方法定義來定義object和name參數(shù)脏答,并不是在代碼中顯示指定。
11. dir([object])
當沒有提供參數(shù)時亩鬼,dir()函數(shù)列出在當前局部符號表中保存的名字殖告,如下例所示:
>>>import sys
>>>dir(sys)
12. divmod(a,b)
devmod()函數(shù)返回一個元組,該元組包含a除以b的商和余數(shù)雳锋,如下例所示:
>>>divmod(7,4)
(1,3)
對整數(shù)而言黄绩,返回值與a/b和a%b相同。如果給出的參數(shù)值是浮點數(shù)玷过,則結(jié)果就是(q,a%b)爽丹,其中:q通常是math.floor(a/b),但是也可能比這小1冶匹,不管在什么情況下习劫,q*b+a%b都非常逼近a;如果a%b是個非零值嚼隘,則其正負號與b相同诽里,并且有0<=abs(a%b)
>>>divmod(3.75,1.125)
(3.0,0.375)
>>>divmod(4.99,1.001)
(4.0,0.98600000000000065)
>>>divmod(-3.5,1.1)
(-4.0,0.90000000000000036)
13. eval(expression[,global[,locals]])
eval()函數(shù)將expression字符串作為python標準表達式進行分析并求值,返回expression字符串的值飞蛹,當不可調(diào)用其他可選參數(shù)時谤狡,expression訪問調(diào)用該函數(shù)的程序段的全局和局部對象灸眼。另一個選擇是:以字典形式給出全局和局部符號表(參見后面部分對global()和local()函數(shù)的論述)。
Eval()函數(shù)的返回值是被求職表達式的值墓懂,如下例所示:
>>>a=99
>>>eval(‘divmod(a,7)’)
(14,1)
任何求值操作的語法錯誤焰宣,都將引發(fā)成異常
eval()函數(shù)還能用來編譯諸如由complie()函數(shù)創(chuàng)建的代碼對象,但僅當該代碼對象用“eval”模式編譯過后才可用eval()函數(shù)編譯捕仔。
要執(zhí)行混合了語句和表達式的python任意代碼匕积,請使用exec語句或使用execfile()函數(shù)來動態(tài)地執(zhí)行含有任意代碼的文件。
14.execfile(file[,globals[,locals]])
execfile()函數(shù)與exec語句等價榜跌,不同之處在于:execfile()函數(shù)執(zhí)行文件中的語句闪唆,而exec語句處理字符串。其中g(shù)lobals和locals參數(shù)應是字典钓葫,該字典包含文件在執(zhí)行期間有效的符號表悄蕾;如果locals參數(shù)省略,則所有的引用都使用globals名稱空間础浮。如果兩個可選參數(shù)都省略帆调,文件就訪問運行期間的當前符號表。
15.filter(function,list)
filter()函數(shù)根據(jù)function參數(shù)返回的結(jié)果是否為真(true)來過濾list參數(shù)中的項豆同,最后返回一個新列表番刊,如下例所示:
a=[1,2,3, 4, 5,6,,7,8,9]
b=filter(lambda x:x>6,a)
print b
[7,8,9]
如果function參數(shù)值為None,就是用identity函數(shù)影锈,list參數(shù)中的所有為假(false)的元素都被刪除撵枢。
16. flaot(x)
float()函數(shù)將x參數(shù)轉(zhuǎn)換為浮點數(shù),其中:x可以是字符串精居,也可以是數(shù)字锄禽。
17. getattr(object,name[,default])
getattr()函數(shù)返回object的name屬性值。在語法上靴姿,以下語句:
getattr(x,’myvalue’)
等價于
x.myvalue
如果name參數(shù)不存在沃但,但給出defalut參數(shù)的值,則此函數(shù)就返回default參數(shù)值佛吓;否則引發(fā)AttributeError異常
18. globals()
globals()函數(shù)返回一個表示當前全局符號表的字典宵晚。這個字典通常就是當前模塊的字典。如果globals()函數(shù)是在一函數(shù)或方法中被調(diào)用维雇,它就返回定義該函數(shù)或方法的模塊的符號表淤刃,而不是調(diào)用此函數(shù)的模塊的符號表。
19. hasattr(object,name)
如果object對象具有與name字符串相匹配的屬性吱型,hasattr()函數(shù)返回真(true)逸贾;否則返回0。
20. hash(object)
hash()函數(shù)返回關(guān)于object對象的整數(shù)散列值。如任何兩個對象比較起來是等價的铝侵,則它們的散列值是一樣的灼伤。此函數(shù)不應用于可便對向上。
21.hex(x)
hex()函數(shù)將一整數(shù)轉(zhuǎn)換為十六進制字符串咪鲜,該字符串是個有效的python表達式狐赡、
22. id(object)
id()函數(shù)返回值為一個整數(shù)(或長整型整數(shù))——該對象的“標識“——該標識在其對應對象的生命期內(nèi),確保是唯一的和恒定不變的疟丙。
23. input([prompt])
input()函數(shù)與eval(raw_input(prompt))等價颖侄。
24. int(x,[radix])
int()函數(shù)將使數(shù)字或字符串x轉(zhuǎn)換為“普通”整數(shù)。如果給出radix參數(shù)的值享郊,則radix參數(shù)值用作轉(zhuǎn)換的基數(shù)发皿,該參數(shù)應是2~36范圍內(nèi)的一個整數(shù)。
25. intern(string)
intern()函數(shù)將string加入到保留字符串的表拂蝎,返回值為保留的版本號』淌遥“保留字符串”通過指針可用温自,而不是一個純的字符串;因此允
許利用指針比較代替字符串比較來進行字典關(guān)鍵字的查找皇钞,這比通常的字符串比較方法功能有所改善悼泌。
在python名稱空間表和用于保留模塊、類或?qū)嵙傩缘淖值渲惺褂玫拿滞ǔ1槐A粲靡约铀倌_本執(zhí)行夹界。
保留字符串定義后不能被作為無用單元收集馆里,所以必須注意在大字典關(guān)鍵字集上使用保留字符串將大大增加內(nèi)存需求,即使字典關(guān)鍵字應急超出了作用域可柿。
26. isinstance(object,class)
isinstance()函數(shù)在object參數(shù)是class參數(shù)的一個實例時鸠踪,返回真。函數(shù)值的確定服從普通繼承法則和子類复斥。如果object參數(shù)是在types模塊中利用類型類定義的特殊類型的實例营密,也能用isinstance()函數(shù)來識別。如果class參數(shù)不是類目锭,也不是類型對象评汰,就引發(fā)TypeError異常
27.issubclass(class1,class2)
如果class1參數(shù)是class2參數(shù)的子類,issubclass()函數(shù)則返回真痢虹。類通常被認為是其自身的子類被去。若兩個參數(shù)中任一個都不是類對象,則引發(fā)TypeError異常
28. len(s)
len()函數(shù)返回一序列(字符串奖唯、元組或列表)或字典對象的長度
29. list(sequence)
list()函數(shù)返回以列表惨缆。該列表的項及順序與sequence參數(shù)的項及順序相同,如下例所示:
>>>list(‘a(chǎn)bc’)
[‘a(chǎn)’,’b’,’c’]
>>>list([1,2,3])
[1,2,3]
30. locals()
locals()函數(shù)返回表示當前局部符號表的字典
31. long(x)
long()函數(shù)將字符串或數(shù)字轉(zhuǎn)換為長整型數(shù),對浮點數(shù)的轉(zhuǎn)換遵循與int()相同的規(guī)則
32. map(function,list,…)
map()函數(shù)將function運用到list中的每一項上踪央,并返回新的列表臀玄,如下例所示:
>>>a=[1,2,3,4]
>>>map(lambda x:pow(x,2),a)
[1,4,9,16]
若提供附加的列表,則它們就被并行地提供給function畅蹂。在后續(xù)無元素的列表增加None健无,直到所有參數(shù)列表達到相同的長度為止。
如果function參數(shù)值為None液斜,則假定為identify函數(shù)净当,將使map()函數(shù)返回刪除所有為假的參數(shù)list规伐。如果function參數(shù)值為None,且給定多個列表參數(shù),返回的列表由一個個元組組成曙强,這些元組由函數(shù)中的每一個參數(shù)列表內(nèi)相同對應位置上的參數(shù)組成,如下例所示:
>>>map(None,[1,2,3,4],[4,5,6,7])
[(1,4),(2,5),(3,6),(4,7)]
上例的結(jié)果與zip()函數(shù)產(chǎn)生的結(jié)果等價
33. max(s,[,args…])
當僅給定一個參數(shù)時朗和,max()函數(shù)返回序列s的最大值犯眠。當給定一列參數(shù)時,max()函數(shù)返回給定參數(shù)的最大參數(shù)
34. min(s[,args…])
當僅給定一個參數(shù)時检访,min()函數(shù)返回序列s的最小值始鱼。當給定一列參數(shù)時,min()函數(shù)返回給定參數(shù)中的最小值脆贵。記滓角濉:多參數(shù)調(diào)用的序列不被遍歷,每個列表參數(shù)作為一個整體進行比較卖氨,如:
min([1,2,3],[4,5,6])
返回
[1,2,3]
而不是通常所想的結(jié)果為1会烙,要得到一個或多個列表中元素的最小值,可將所有列表連成一串筒捺,如下所示:
min([1,2,3]+[4,5,6])
35. oct(x)
該函數(shù)將整數(shù)轉(zhuǎn)換為八進制字符串柏腻。其結(jié)果是個有效的python表達式,如下例所示:
>>>oct(2001)
‘03721’
請注意系吭,返回值通常是無符號數(shù)葫盼。這樣致使oct(-1)在32位機器上產(chǎn)生’037777777777’的結(jié)果
36. open(filename[,mode[,bufsize]])
open()函數(shù)通過使用mode和緩存bufsize類型來打開filename標識的文件。此函數(shù)返一文件對象其中mode與系統(tǒng)函數(shù)fopen()使用的模式相同村斟。如果mode參數(shù)省略贫导,其默認取值為r
模式 含義
r打開用于讀
w打開用于寫
a打開用于附加(打開期間,文件位置自動移到文件末尾)
r+打開用于更新(讀和寫)
w+截斷(或清空)文件蟆盹,接著打開文件用于讀寫
a+打開文件用于讀和寫孩灯,并自動改變當前為止到文件尾
當附加任何模式選項時,以二進制模式而不是文本模式逾滥,打開文件(這種模式b僅對windows峰档、dos和其他一些操作系統(tǒng)有效败匹,對Unix、MacOS和BeOS則不管選項為何值讥巡,以二進制模式對待所有文件)
open()函數(shù)的bufsize選項參數(shù)決定從文件中讀取數(shù)據(jù)時所使用的緩存的大小掀亩,如果bufsize省略,就使用系統(tǒng)默認的緩存容量
bufsize值 說明
禁用緩存
行緩存
>1使用大小近似為bufsize字符長度的緩存
<0使用系統(tǒng)默認
37.ord(c)
該函數(shù)返回由一個字符c組成的字符串的ASCII碼值或Unicode數(shù)字碼欢顷。ord()函數(shù)是chr()函數(shù)和nuichr()函數(shù)的反函數(shù)
38.pow(x,y[,z])
該函數(shù)返回以x為底數(shù)以y為指數(shù)的冪值槽棍。如果給出z,該函數(shù)就計算x的y次冪值被z取模的值抬驴,這樣的計算比利用:pow(x,y)%z的效率更高提供給pow()函數(shù)的參數(shù)應是數(shù)值型炼七,并且給定的類型決定返回值的類型。如果計算得出的數(shù)值不能用給定參數(shù)值的類型表示布持,則引發(fā)異常豌拙,
比如,以下對pow()的調(diào)用將失斕馀:
pow(2,-1)
但是
pow(2.0,-1)
是有效的
39. range([start,]stop[,step])
該函數(shù)返回數(shù)值列表按傅,該數(shù)值列表從start開始,以step為步長胧卤,于stop之前結(jié)束唯绍。所有的數(shù)字都應列出,并且以普通整型數(shù)返回灌侣。如果step省略,則默認取1.如果start省略裂问,則從0開始求值侧啼。如果以兩個參數(shù)形式調(diào)用,則認作給定的參數(shù)是start和stop堪簿,如果要定義步長就必須給出全部的三個參數(shù)痊乾。下面對range()函數(shù)的調(diào)用使用了值為正數(shù)的步長step:
>>>range(5,25,5)
[5,10,15,20]
請注意,最后的數(shù)值是stop減去step椭更,range()函數(shù)的返回值從小遞增到大哪审,趨近stop的值,但不包含stop這個值
如果step的給定值是負數(shù)虑瀑,range()函數(shù)的返回值從大遞增到小湿滓,而不是遞增,stop必須比stop猩喙贰叽奥;否則返回的列表為空。下列說明了step取值為負數(shù)的運用情況:
>>>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])
該函數(shù)從sys.stdin接受原始輸入并返回字符串痛侍。輸入以換行符為結(jié)束朝氓,其中換行符在輸入字符串返回給調(diào)用者之前被去除。如果給出prompt,末尾不含換行符的prompt就被寫到sys.stdout中赵哲,并用作輸入的提示待德,如下例所示:
>>>name=raw_input(‘Name?’)
Name?Martin
如果已加載readline模塊,則諸如行編輯和歷史記錄的特性在輸入期間就得到支持
41. reduce(function,sequence[,initializer])
該函數(shù)一次應用function(支持兩個函數(shù))到sequence中的每個元素上枫夺,逐漸縮短整個語句直到為一個單一的值将宪。舉例,下面的語句模擬了算術(shù)運算符“筷屡!”:
reduce(lambda x,y:x*y,[1,2,3,4,5])
其結(jié)果如同執(zhí)行以下計算一樣:
((((1*2)*3)*4)*5)
結(jié)果等于120
如果給出initializer參數(shù)值涧偷,則initializer參數(shù)值就被用作序列的第一個元素,如下列所示:
>>>reduce(lambda x,y:x*y,[1,2,3,4,5],10)
1200
42. reload(module)
reload()函數(shù)將以前導入過的模塊再加載一次毙死。重新加載(reload)包括最初導入模塊是應用的分析過程和初始化過程燎潮。這樣就允許在不退出解釋器的情況重新加載已更改的python模塊。
使用reload()函數(shù)的若干注意事項如下:
*如果模塊在語法上是正確的扼倘,但在初始化過程中失敗确封,則導入過程不能正確地將模塊的名字綁定到符號表中,這時再菊,必須在模塊能被重新加載之前使用import()函數(shù)加載該模塊爪喘。
*重新加載的模塊不刪除最初舊版本在符號表中的登記項。對于有恒定名字的對象和函數(shù)纠拔,這當然不是問題秉剑;但是,若對一模塊實體更改了名字稠诲,模塊名在重新加載后仍保持在符號表中
*支持擴展模塊(它依賴與內(nèi)置的或所支持的動態(tài)加載的函數(shù)庫)的重新加載侦鹏,但可能是無目標的,并且確定可能導致失敗臀叙,這完全依賴于動態(tài)加載的函數(shù)庫的行為
*如果以模塊利用from…import…方式從另一個模塊導入對象略水,reload()函數(shù)不重定義導入的對象,可利用import…形式避免這個問題
*提供類的重新加載模塊不影響所提供類的任何已存實例——已存實例將繼續(xù)使用原來的方法定義劝萤;只有該類的新實例使用新格式渊涝。這個原則對派生類同樣適用
43. repr(object)
repr()函數(shù)返回對象的字符串表示。這與將對象或?qū)傩赃m用單反引號(‘)的結(jié)果是一致的床嫌。返回的字符串產(chǎn)生一個對象跨释,該對象的值與將
object傳遞給eval()函數(shù)產(chǎn)生的值一樣,如下例所示:
>>>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()函數(shù)返回浮點型參數(shù)x舍入到十進制小數(shù)點后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)
該函數(shù)將object參數(shù)的name屬性設置為value參數(shù)值煤傍。setattr()函數(shù)是getattr()函數(shù)的反函數(shù),后者僅獲得信息嘱蛋,以下語句:
setattr(myattr’,’new value’)
等價于
myobj.myattr=’new value’
setattr()函數(shù)能用在這樣的情況下:屬性是通過name參數(shù)以編程方式命名蚯姆,而不是顯式地命名屬性
46. slice([start,]stop,[,step])
該函數(shù)返回已序列切片(slice)對象五续,該對象表示由range(start,stop,step)指定的索引集。如果給出一個參數(shù)龄恋,此參數(shù)就作為stop參數(shù)值疙驾;如果給出兩個參數(shù),它們就作為start和stop的參數(shù)值郭毕;任何未給出參數(shù)值的參數(shù)默認取值為None它碎。序列切片對象有3個屬性(start,stop,和step),這3個屬性僅僅返回要提供給slice()函數(shù)的參數(shù)
47. str(object)
返回對象的一個字符串表示显押。這與repr()函數(shù)相似扳肛,唯一不同之處在于:此函數(shù)返回值設計為可打印字符串而不是與eval()函數(shù)相兼容的字符串
48. tuple(object)
tuple()函數(shù)返回一個元組,該元組的項及項的順序與sequence參數(shù)完全一樣乘碑,以下就是tuple()函數(shù)的舉例:
>>>tuple(‘a(chǎn)bc’)
(‘a(chǎn)’,’b’,’c’)
>>>tuple([1,2,3])
(1,2,3)
49. type(object)
該函數(shù)返回object參數(shù)的類型挖息。返回值是個如類型模塊所描述一樣的類型對象,舉例如下:
>>>import type
>>>if type(string)==type.StringType:
print ‘This is a string’
50. unichr(i)
該函數(shù)返回代碼是一個整型參數(shù)i的Unicode字符的Unicode字符串兽肤。此函數(shù)等價于前面論述的chr()函數(shù)套腹。請注意,要將Unicode字符轉(zhuǎn)換回其整數(shù)格式资铡,可使用ord()函數(shù)电禀;沒有uniord()函數(shù)、如果給出的整數(shù)超出0~65535這個范圍笤休,則引發(fā)ValueError異常
51. unicode(string[,encoding[,errors]]))
該函數(shù)利用編碼格式解碼器將給定的字符串從一種格式解碼為另一種格式尖飞。編碼的任何錯誤都用errors參數(shù)定義的字符串標記此函數(shù)特別用于在字符串和Unicode編碼格式之間轉(zhuǎn)換。默認(當不給出encoding參數(shù)值)操作是以嚴格方式將字符串解碼為UTF-8格式店雅,發(fā)生errors錯誤時就引發(fā)ValueError異常政基。有關(guān)合適的解碼列表,請見codecs模塊
52.vars([object])
該函數(shù)返回對應于當前局部符號表的字典底洗。當給出模塊腋么、類或?qū)嵗龝r咕娄,vars()函數(shù)返回對應那個對象的符號表的字典亥揖。因為結(jié)果是非定義的,所以一定不要修改返回的字典
53. xrange([start,]stop[,step])
該函數(shù)的作用與range()函數(shù)一樣圣勒,唯一的區(qū)別是:xrange()函數(shù)返回一個xrange對象费变。xrange()對象是個不透明對象類型,此類型返回的信息與所請求的參數(shù)列表是一致的圣贸,但是它不必存儲列表中每個獨立的元素挚歧。在創(chuàng)建非常巨大列表的情況下,此函數(shù)特別有用吁峻;利用xrange()函數(shù)節(jié)省下來的內(nèi)存比起用range()函數(shù)是相當可觀的
54. zip(seq1,…)
zip()函數(shù)處理一系列序列滑负,將這些序列返回一個元組列表在张。其中,每個元組包含了給定的每個序列的第n個元素矮慕。以下是個例子:
>>>a=[1,2,3,4]
>>>b=[5,6,7,8]
>>>zip(a,b)
[(1,5),(2,6),(3,7),(4,8)]
55. 執(zhí)行任意語句
python支持3條指令帮匾,這3條指令允許執(zhí)行一些任意文件或python代碼的字符串,這3條指令是exec語句痴鳄、execfile()和eval()函數(shù)瘟斜。
56. exec語句
exec語句被設計為執(zhí)行能使用函數(shù)和語句的任意組合的python的任何代碼片段。執(zhí)行的代碼訪問相同的全局定義和局部定義的對象痪寻、類和方法或函數(shù)螺句。以下是使用exec語句的簡單例子:
exec “print ‘Hello World’”
也能通過提供一個包含對象及其取值的列表的字典來限定對exec語句有效的資源,如下例這樣:
exec “print message” in myglobals,mylocals
能用globals()和locals()函數(shù)來獲得當前的字典
請注意橡类,exec語句執(zhí)行表達式和語句蛇尚、或者對表達式和語句求值,但是exec語句不返回任何值猫态。因為exec是語句不是函數(shù)佣蓉,所以任何獲取返回值的試圖都將導致語法錯誤
57. execfile()函數(shù)
該函數(shù)執(zhí)行與exec語句同樣的操作,正如前面所描述的那樣亲雪,它們的不同之處在于:execfile()函數(shù)從問幾十年中讀取被執(zhí)行的語句勇凭,執(zhí)行的對象不是字符串,不是代碼對象义辕;execfile()函數(shù)的其他所有方面都與exec語句等價
58. eval()函數(shù)
該函數(shù)不允許執(zhí)行任意的python語句虾标。eval()函數(shù)被設計為:執(zhí)行一個python表達式,并返回值灌砖,如下例中一樣:
result=eval(userexpression)
或者在語句中更顯式地給出表達式璧函,如下例所示:
result=eval(“3+6”)
不能使用eval()函數(shù)去執(zhí)行語句,根據(jù)經(jīng)驗基显,通常使用eval()函數(shù)開將一表達式求值并返回一個值蘸吓,而在其他所有情況下則使用exec語句exec()