Python3提升教程一(個人整理_第1頁
Python3提升教程一(個人整理_第2頁
Python3提升教程一(個人整理_第3頁
Python3提升教程一(個人整理_第4頁
Python3提升教程一(個人整理_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Python3迭代器與生成器迭代器迭代是Python最強大的功能之一,是訪問集合元素的一種方式。迭代器是一個可以記住遍歷的位置的對象。迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不 會后退。迭代器有兩個基本的方法:iter()和next()。字符串,列表或元組對象都可用于創(chuàng)建迭代器: 11print#創(chuàng)建e代器対象fr輸出迭代器的下一個元壷1234迭代器對象可以使用常規(guī)for語句進行遍歷:#!/uEr/bin/pythons,3,4it = iter (list) #創(chuàng)建迭代器對象 fan K in it:priFvt (町 encl=)執(zhí)行以上程序,輸岀結

2、果如下:也可以使用next()函數(shù):ft! / usr/bin/py thonSimport sys1七=iterfList ) 羊創(chuàng)崖迭代器jTl象uihil-e Truettry:print (nextit) except S.topiteation:sys,exi+)執(zhí)行以上程序,輸岀結果如下:創(chuàng)建一個迭代器把一個類作為一個迭代器使用需要在類中實現(xiàn)兩個方法iter_0 與 _n ext_()。Python的構造函數(shù)為 _init如果你已經(jīng)了解的面向對象編程,就知道類都有一個構造函數(shù), (),它會在對象初始化的時候執(zhí)行。_n ext_()方法并通過 St_iter_()方法返回一個特殊的迭

3、代器對象,這個迭代器對象實現(xiàn)了 op Iteration異常標識迭代的完成。_next_()方法(Python 2里是next()會返回下一個迭代器對象。class MyNumbsrs: def _iter_(self);Si e 1 f. a = 1return 5=lfde-f _ next C self):X 二 self&elf.d += 1returr x mycla 5S = My NijintJers () iwiyiteir - iter(in/class) pri ft (n ext ( my it er) 卩廣Lnt ( riexhi(myiter ) pr irvt (n

4、ext (my it er) print i(next(iiiyiten) print(next(myIter)J執(zhí)行輸岀結果為:Sto pl terati on_next_()方法中我們stop Iteration異常用于標識迭代的完成,防止岀現(xiàn)無限循環(huán)的情況,在可以設置在完成指定循環(huán)次數(shù)后觸發(fā)Sto piteration異常來結束迭代。在20次迭代后停止執(zhí)行:claesL HyWumfcersidef ier(self):self , fl 二 1return eelfdef _next_self);if self.a def helio():print(Hello World! )hel

5、lo() Hello World!更復雜點的應用,函數(shù)中帶上參數(shù)變量牡! /iLisr/ bin/pythonStt計算面穆函勤def area(widthj. height : return width * heightdef print_weleone(name):print(welcomeJ name)printjvelcomeCRurioob)w = 4h = 5print (width vr, height =h, arsa = areah)以上實例輸岀結果:WelcomeRunoob width =4 height =5 area =20函數(shù)調用定義一個函數(shù):給了函數(shù)一個名稱,指定

6、了函數(shù)里包含的參數(shù),和代碼塊結構。提示符執(zhí)行。如下實例調用了prin tme()函數(shù):# Vus rfbinpython 3定買數(shù)def pri.ntine( str ):#打陽任何傳入的宇蒔串print C5tr)returnfr調用ffl數(shù)p廣int低我裏調用用戶自宦義函數(shù)!JPrintiiieC再次調用同一函數(shù)、Python命令這個函數(shù)的基本結構完成以后,你可以通過另一個函數(shù)調用執(zhí)行,也可以直接從以上實例輸岀結果:我要調用用戶自定義函數(shù)!再次調用同一函數(shù)參數(shù)傳遞在python中,類型屬于對象,變量是沒有類型的:a= 1,2,3a=zuomu以上代碼中,1,2,3是List類型,Runoo

7、b 是String類型,而變量 a是沒有類型,她僅僅是一個對象的引用(一個指針),可以是指向List類型對象,也可以是指向String類型對象??筛?mutable)與不可更改(immutable)對象在python中,strings, tuples,和numbers是不可更改的對象,而list,dict等則是可以修改的對象。? 不可變類型:變量賦值a=5后再賦值a=10,這里實際是新生成一個int值對象10 ,再讓a指向它,而5被丟棄,不是改變 a的值,相當于新生成了可變類型:變量賦值la=1,2,3,4后再賦值la2=5則是將list la的第三個元素值更改,本身la沒有動,只是其內部的

8、一部分值被修改了。python函數(shù)的參數(shù)傳遞: ? 不可變類型: 類似C+的值傳遞,如整數(shù)、字符串、元組。如 fun (a),傳遞的只是 a的值,沒有影響a對象本身。比如在 fun (a)內部修改a的值,只是修改另一個復制的對象,不會影響a本身。可變類型:類似C+的引用傳遞,如列表,字典。女nfun (la),則是將la真正的傳過去,修改后fun外部的la也會受影響python中一切都是對象,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變對象和傳可變對象。python傳不可變對象實例jt i/usn/bin/pythonldef 匚hangelnit( b ):a = IQb M 2

9、Change工nt(b)pirin-t( b ) # 結果是 2實例中有int對象2,指向它的變量是b,在傳遞給ChangeInt函數(shù)時,按傳值的方式復制了變量b, a和b都指向了同一個Int對象,在a=10時,則新生成一個int值對象10,并讓a指向 它。傳可變對象實例可變對象在函數(shù)里修改了參數(shù),那么在調用這個函數(shù)的函數(shù)里,原始的參數(shù)也被改變了。例如:#! /usr/lbinr python3 #可寫函皴說明def changeine nylist僮efe傳入的列喪”nylist .appendl( 123,4) print 數(shù)內取值:J mylist) return# 調用changeme

10、SSrnnylist = IB, 2艮死print (S埶外取值:inylist )傳入函數(shù)的和在末尾添加新內容的對象用的是同一個引用。故輸岀結果如下:函數(shù)內取值:10, 20, 30, 1, 2, 3, 4函數(shù)外取值:10, 20, 30, 1, 2, 3, 4參數(shù)以下是調用函數(shù)時可使用的正式參數(shù)類型:必需參數(shù)關鍵字參數(shù)?默認參數(shù)不定長參數(shù)必需參數(shù)必需參數(shù)須以正確的順序傳入函數(shù)。調用時的數(shù)量必須和聲明時的一樣。調用printme()函數(shù),你必須傳入一個參數(shù),不然會岀現(xiàn)語法錯誤:# ! /ii5r/bin/python3#可寫a數(shù)說明def Printme( 5tr : ”打EU任何傳典的寧符

11、串” print (st r)return#調用printme函數(shù),不抽縷勘會抿愴 P r in+rne以上實例輸岀結果:Traceback ( most recent call last ):File test.py, line 10, in :strprintme ()TypeError : printme () missing 1 required positional argument關鍵字參數(shù)關鍵字參數(shù)和函數(shù)調用關系緊密,函數(shù)調用使用關鍵字參數(shù)來確定傳入的參數(shù)值。Python解釋器能夠用參數(shù)使用關鍵字參數(shù)允許函數(shù)調用時參數(shù)的順序與聲明時不一致,因為名匹配參數(shù)值。以下實例在函數(shù) pri

12、n tme()調用時使用參數(shù)名:吐 i/us r/bin/python3?1可寫函勘說朋def purinine stn ):打印任何傳入的字符串-print (str)return赴調用prH.rvtrn己函數(shù)p廠irvtm珂Str =菜烏數(shù)程)以上實例輸岀結果:菜鳥教程以下實例中演示了函數(shù)參數(shù)的使用不需要使用指定順序:ft! Zusr/bin/ pythcn3#可寫函數(shù)說明dief printinfo( nene, age ); “打印任何傳入的寶WS” pi-zLn1z (名字=* J name ) print年齡:age) return祥調用p rintinfoiS數(shù)priirtin*

13、o( a=n3ine=ninoo匕以上實例輸岀結果:名字:runoob年齡:50默認參數(shù)age參數(shù),則調用函數(shù)時,如果沒有傳遞參數(shù),則會使用默認參數(shù)。以下實例中如果沒有傳入使用默認值:/usr/lbinZpython3#可寫a教說朋def printinfo( name, age = 35 ): ”打印任何傳入的宇符串” print (E 名宇;J n ame print年SS: ireturn調用print i nf 口函勘naine=runootprintinfof &百&=亍燈= runoob J pfi吐(-Jpri ntinfof以上實例輸岀結果:名字:zuomu年齡:23名字:zu

14、omu年齡:23不定長參數(shù)你可能需要一個函數(shù)能處理比當初聲明時更多的參數(shù)。這些參數(shù)叫做不定長參數(shù),和上述參數(shù)不同,聲明時不會命名。基本語法如下:def functionname ( formal_args ,* var_args_tuple):函數(shù)_文檔字符串function suitereturn exp ression加了星號*的參數(shù)會以元組(tuple)的形式導入,存放所有未命名的變量參數(shù)。! /u&r/bin/pythonSP可寫函數(shù)說明def printin百of Qrglj *yartuple ): “打用任何傳入的蜃埶 print (輸出: print (argl)print (

15、vartuiple)# 調printinfo 函數(shù)Printinfo( 70&0 $50以上實例輸岀結果:輸出:(60,50)如果在函數(shù)調用時沒有指定參數(shù),它就是一個空元組。我們也可以不向函數(shù)傳遞未命名的變量。如下實例:704 ! /u r/lbln/python3rt可寫函麺說朋def printinfo( arglj *打印任何詩入的盞埶 print輸出= prirrt (弓glj for vsr in vartuiple:print(V3 r)return吐調用print in-fp怪I數(shù)printinfo( 16 )print info(GO, 50 )以上實例輸岀結果:輸出:10輸出

16、:706050還有一種就是參數(shù)帶兩個星號*基本語法如下:def functionname ( formal_args ,* var_args_dict ):函數(shù)文檔字符串-function suitereturn exp ression加了兩個星號*的參數(shù)會以字典的形式導入。# r/bin/pythffn3 #可寫函數(shù)說明def printinf0( arglj廣diet J:“打印任何隹入的盪數(shù) print輸岀 f print (argl) print (vardict Jtt iji) Sprint info 畫數(shù)以上實例輸岀結果:輸出:a :2,b : 3聲明函數(shù)時,參數(shù)中星號 *可以單

17、獨岀現(xiàn),例如def f ( a, b,*, c):return a+b+c如果單獨岀現(xiàn)星號 *后的參數(shù)必須用關鍵字傳入。def f (a, b,*, c):. return a+b+c f ( 1, 2, 3)# 報錯Traceback (most recent call last ):File , line 1, in 3 were givenTypeError : f() takes 2 positional arguments but f (1,2, c=3)# 正常6 匿名函數(shù)python使用lambda來創(chuàng)建匿名函數(shù)。所謂匿名,意即不再使用def語句這樣標準的形式定義一個函數(shù)。lam

18、bda只是一個表達式,函數(shù)體比def簡單很多。lambda表達式中封裝有限的邏lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在輯進去。lambda函數(shù)擁有自己的命名空間,且不能訪問自己參數(shù)列表之外或全局命名空間里的參數(shù)。雖然lambda函數(shù)看起來只能寫一行,卻不等同于C或C+的內聯(lián)函數(shù),后者的目的是調用小函數(shù)時不占用棧內存從而增加運行效率。語法lambda函數(shù)的語法只包含一個語句,如下:lambda arg1 , arg2 ,argn : expression如下實例:T*! Zusr/lbin/pythonl#可寫函數(shù)說陰sum = lambda arglj a廣呂2: argl+ a.-g2#調用5 M碰J數(shù)print r相加后的値掏LJii( print (相加啟的值為:”以上實例輸岀結果:相加后的值為:30

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論