版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
函數(shù)和代碼的復(fù)用函數(shù)的定義微實例:生日歌。過生日時要為朋友唱生日歌,歌詞為:Happybirthdaytoyou!Happybirthdaytoyou!Happybirthday,dear<名字>Happybirthdaytoyou!編寫程序為Mike和Lily輸出生日歌。最簡單的實現(xiàn)方法是重復(fù)運用print()語句函數(shù)的根本運用函數(shù)的定義函數(shù)是一段具有特定功能的、可重用的語句組,用函數(shù)名來表示并經(jīng)過函數(shù)名進展完勝利能調(diào)用。函數(shù)也可以看作是一段具有名字的子程序,可以在需求的地方調(diào)用執(zhí)行,不需求在每個執(zhí)行地方反復(fù)編寫這些語句。每次運用函數(shù)可以提供不同的參數(shù)作為輸入,以實現(xiàn)對不同數(shù)據(jù)的處置;函數(shù)執(zhí)行后,還可以反響相應(yīng)的處置結(jié)果。函數(shù)是一種功能籠統(tǒng)函數(shù)的定義Python定義一個函數(shù)運用def保管字,語法方式如下:def<函數(shù)名>(<參數(shù)列表>): '''注釋'''<函數(shù)體>return<前往值列表>函數(shù)的定義1234print("Happybirthdaytoyou!")print("Happybirthdaytoyou!")print("Happybirthday,dearMike!")print("Happybirthdaytoyou!")最簡單的實現(xiàn)方法是反復(fù)運用print()語句,如下:函數(shù)的定義微實例5.1m5.1HappyBirthday.py12345678910defhappy():print("Happybirthdaytoyou!")defhappyB(name):happy()happy()print("Happybirthday,dear{}!".format(name))happy()happyB("Mike")print()happyB("Lily")>>>Happybirthdaytoyou!Happybirthdaytoyou!Happybirthday,dearMike!Happybirthdaytoyou!Happybirthdaytoyou!Happybirthdaytoyou!Happybirthday,dearLily!Happybirthdaytoyou!函數(shù)調(diào)用的過程程序調(diào)用一個函數(shù)需求執(zhí)行以下四個步驟:〔1〕調(diào)用程序在調(diào)用途暫停執(zhí)行;〔2〕在調(diào)用時將實參復(fù)制給函數(shù)的形參;〔3〕執(zhí)行函數(shù)體語句;〔4〕函數(shù)調(diào)用終了給出前往值,程序回到調(diào)用前的暫停處繼續(xù)執(zhí)行。函數(shù)調(diào)用的過程微實例5.1中happyB()的被調(diào)用過程函數(shù)調(diào)用的過程函數(shù)調(diào)用的過程lambda函數(shù)Python的有33個保管字,其中一個是lambda,該保管字用于定義一種特殊的函數(shù)——匿名函數(shù),又稱lambda函數(shù)。匿名函數(shù)并非沒有名字,而是將函數(shù)名作為函數(shù)結(jié)果前往,如下:<函數(shù)名>=lambda<參數(shù)列表>:<表達式>lambda函數(shù)與正常函數(shù)一樣,等價于下面方式:def<函數(shù)名>(<參數(shù)列表>):return<表達式>lambda函數(shù)簡單說,lambda函數(shù)用于定義簡單的、可以在一行內(nèi)表示的函數(shù),實例如下。>>>f=lambdax,y:x+y>>>type(f)<class'function'>>>>f(10,12)22函數(shù)的參數(shù)傳送可選參數(shù)和可變數(shù)量參數(shù)在定義函數(shù)時,有些參數(shù)可以存在默許值。默許值參數(shù)必需出如今函數(shù)參數(shù)列表的最右端,且任何一個默許值參數(shù)右邊不能有非默許值參數(shù)。>>>defdup(str,times=2):print(str*times)>>>dup("knock~")knock~knock~>>>dup("knock~",4)knock~knock~knock~knock~可選參數(shù)和可變數(shù)量參數(shù)在函數(shù)定義時,可以設(shè)計可變數(shù)量參數(shù),經(jīng)過參數(shù)前添加星號〔*〕實現(xiàn)>>>defvfunc(a,*b):print(type(b))forninb:a+=nreturna>>>vfunc(1,2,3,4,5)<class'tuple'>15參數(shù)的位置和稱號傳送Python提供了按照形參稱號輸入實參的方式,調(diào)用如下:result=func(x2=4,y2=5,z2=6,x1=1,y1=2,z1=3)由于調(diào)用函數(shù)時指定了參數(shù)稱號,所以參數(shù)之間的順序可以恣意調(diào)整。變量的前往值return語句用來退出函數(shù)并將程序前往到函數(shù)被調(diào)用的位置繼續(xù)執(zhí)行。return語句同時可以將0個、1個或多個函數(shù)運算完的結(jié)果前往給函數(shù)被調(diào)用途的變量,例如。>>>deffunc(a,b):returna*b>>>s=func("knock~",2)>>>print(s)knock~knock~變量的前往值函數(shù)可以沒有return,此時函數(shù)并不前往值,如微實例5.1的happy()函數(shù)。函數(shù)也可以用return前往多個值,多個值以元組類型保管,例如。>>>deffunc(a,b):returnb,a>>>s=func("knock~",2)>>>print(s,type(s))(2,'knock~')<class'tuple'>函數(shù)對變量的作用一個程序中的變量包括兩類:全局變量和部分變量。全局變量指在函數(shù)之外定義的變量,普通沒有縮進,在程序執(zhí)行全過程有效。部分變量指在函數(shù)內(nèi)部運用的變量,僅在函數(shù)內(nèi)部有效,當函數(shù)退出時變量將不存在。變量的前往值>>>deffunc(a,b):c=a*b#c是部分變量,a和b作為函數(shù)參數(shù)也是部分變量returnc>>>s=func("knock~",2)>>>print(c)Traceback(mostrecentcalllast):File"<pyshell#6>",line1,in<module>print(c)NameError:name'c'isnotdefined這個例子闡明,當函數(shù)執(zhí)行完退出后,其內(nèi)部變量將被釋放。假設(shè)函數(shù)內(nèi)部運用了全局變量呢?變量的前往值>>>n=1 #n是全局變量>>>deffunc(a,b):n=b #這個n是在函數(shù)內(nèi)存中新生成的部分變量,不是全局變量returna*b>>>s=func("knock~",2)>>>print(s,n) #測試一下n值能否改動knock~knock~1函數(shù)func()內(nèi)部運用了變量n,并且將變量參數(shù)b賦值給變量n,為何全局變量n值沒有改動?變量的前往值假設(shè)希望讓func()函數(shù)將n當作全局變量,需求在變量n使用前顯式聲明該變量為全局變量,代碼如下。>>>n=1 #n是全局變量>>>deffunc(a,b):globalnn=b #將部分變量b賦值給全局變量nreturna*b>>>s=func("knock~",2)>>>print(s,n) #測試一下n值能否改動knock~knock~2變量的前往值假設(shè)此時的全局變量不是整數(shù)n,而是列表類型ls,會怎樣樣呢?了解如下代碼。>>>ls=[] #ls是全局列表變量>>>deffunc(a,b):ls.append(b) #將部分變量b添加到全局列表變量ls中returna*b>>>s=func("knock~",2)>>>print(s,ls) #測試一下ls值能否改動knock~knock~[2]變量的前往值假設(shè)func()函數(shù)內(nèi)部存在一個真實創(chuàng)建過且稱號為ls的列表,那么func()將操作該列表而不會修正全局變量,例子如下。>>>ls=[] #ls是全局列表變量>>>deffunc(a,b):ls=[] #創(chuàng)建了稱號為ls的部分列表變量列l(wèi)s.append(b) #將部分變量b添加到全局列表變量ls中returna*b>>>s=func("knock~",3)>>>print(s,ls) #測試一下ls值能否改動knock~knock~[]變量的前往值Python函數(shù)對變量的作用遵守如下原那么:對于簡單數(shù)據(jù)類型變量無論能否與全局變量重名,僅在函數(shù)內(nèi)部創(chuàng)建和運用,函數(shù)退出后變量被釋放;簡單數(shù)據(jù)類型變量在用global保管字聲明后,作為全局變量;對于組合數(shù)據(jù)類型的全局變量,假設(shè)在函數(shù)內(nèi)部沒有被真實創(chuàng)建的同名變量,那么函數(shù)內(nèi)部可直接運用并修正全局變量的值;假設(shè)函數(shù)內(nèi)部真實創(chuàng)建了組合數(shù)據(jù)類型變量,無論能否有同名全局變量,函數(shù)僅對部分變量進展操作。案例精選例:編寫函數(shù)模擬猜數(shù)游戲。系統(tǒng)隨機產(chǎn)生一個數(shù),玩家最多可以猜5次,系統(tǒng)會根據(jù)玩家的猜測進展提示,玩家那么可以根據(jù)系統(tǒng)的提示對下一次的猜測進展適當調(diào)整。案例精選fromrandomimportrandintdefguess(maxValue=100,maxTimes=5):value=randint(1,maxValue)#隨機生成一個整數(shù)foriinrange(maxTimes):prompt='StarttoGUESS:'ifi==0else'Guessagain:'#運用異常處置構(gòu)造,防止輸入不是數(shù)字的情況try:x=int(input(prompt))except:print('Mustinputanintegerbetween1and',maxValue)else:ifx==value:#猜對了print('Congratulations!')breakelifx>value:print('Toobig')else:print('Toolittle')else:#次數(shù)用完還沒猜對,游戲終了,提示正確答案print('Gameover.FAIL.')print('Thevalueis',value)小練習:運用turtle繪制陰陽圖形datetime庫的運用datetime庫概述以不同格式顯示日期和時間是程序中最常用到的功能。Python提供了一個處置時間的規(guī)范函數(shù)庫datetime,它提供了一系列由簡單到復(fù)雜的時間處置方法。datetime庫可以從系統(tǒng)中獲得時間,并以用戶選擇的格式輸出。datetime庫概述datetime庫以類的方式提供多種日期和時間表達方式:類datetime.date:可以表示年、月、日等類datetime.time:可以表示小時、分鐘、秒、毫秒等類datetime.datetime:日期和時間表示的類,其很多功能覆蓋date和time類類datetime.timedelta:時間間隔有關(guān)的類類datetime.tzinfo:與時區(qū)有關(guān)的信息表示類datetime庫解析運用datetime.now()獲得當前日期和時間對象,運用方法如下:fromdatetimeimportdatetimedatetime.now()作用:前往一個datetime類型,表示當前的日期和時間,準確到微秒。>>>fromdatetimeimportdatetime>>>today=datetime.now()>>>todaydatetime.datetime(2021,9,20,10,29,43,928549)datetime庫解析運用datetime.utcnow()獲得當前日期和時間對應(yīng)的UTC〔世界規(guī)范時間〕時間對象,運用方法如下:datetime.utcnow()作用:前往datetime類型,表示當前日期和時間的UTC表示,準確到微秒。>>>today=datetime.utcnow()>>>todaydatetime.datetime(2021,9,20,2,35,1,427954)datetime庫解析datetime.now()和datetime.utcnow()都返回一個datetime類型的對象,也可以直接運用datetime()構(gòu)造一個日期和時間對象,運用方法如下:datetime(year,month,day,hour=0,minute=0,second=0,microsecond=0)作用:前往一個datetime類型,表示指定的日期和時間,可以準確到微秒。datetime庫解析調(diào)用datetime()函數(shù)直接創(chuàng)建一個datetime對象,表示2021年9月16日22:33,32秒7微秒,執(zhí)行結(jié)果如下:>>>someday=datetime(2021,9,16,22,33,32,7)>>>somedaydatetime.datetime(2021,9,16,22,33,32,7)程序曾經(jīng)有了一個datetime對象,進一步可以利用這個對象的屬性顯示時間,為了區(qū)別datetime庫名,采用上例中的someday替代生成的datetime對象datetime庫解析屬性描述someday.min固定返回datetime的最小時間對象,datetime(1,1,1,0,0)someday.max固定返回datetime的最大時間對象,datetime(9999,12,31,23,59,59,999999)someday.year返回someday包含的年份someday.month返回someday包含的月份someday.day返回someday包含的日期someday.hour返回someday包含的小時someday.minute返回someday包含的分鐘someday.second返回someday包含的秒鐘someday.microsecond返回someday包含的微秒值datetime庫解析datetime對象有3個常用的時間格式化方法,如表所示>>>someday=datetime(2021,9,16,22,33,32,7)>>>someday.isoformat()'2021-09-16T22:33:32.000007'>>>someday.isoweekday()5屬性描述someday.isoformat()采用ISO8601標準顯示時間someday.isoweekday()根據(jù)日期計算星期后返回1-7,對應(yīng)星期一到星期日someday.strftime(format)根據(jù)格式化字符串format進行格式顯示的方法isoformat()和isoweekday()方法的運用如下:datetime庫解析strftime()方法是時間格式化最有效的方法,幾乎可以以任何通用格式輸出時間>>>someday.strftime("%Y-%m-%d%H:%M:%S")'2021-09-1622:33:32'datetime庫解析格式化字符串日期/時間值范圍和實例%Y年份0001~9999,例如:1900%m月份01~12,例如:10%B月名January~December,例如:April%b月名縮寫Jan~Dec,例如:Apr%d日期01~31,例如:25%A星期Monday~Sunday,例如:Wednesday%a星期縮寫Mon~Sun,例如:Wed%H小時(24h制)00~23,例如:12%I小時(12h制)01~12,例如:7%p上/下午AM,PM,例如:PM%M分鐘00~59,例如:26%S秒00~59,例如:26datetime庫解析strftime()格式化字符串的數(shù)字左側(cè)會自動補零,上述格式也可以與print()的格式化函數(shù)一同運用>>>fromdatetimeimportdatetime>>>now=datetime.now()>>>now.strftime("%Y-%m-%d")'2021-09-20'>>>now.strftime("%A,%d.%B%Y%I:%M%p")'Tuesday,20.September202101:53PM'>>>print("今天是{0:%Y}年{0:%m}月{0:%d}日".format(now))今天是2021年09月20日七段數(shù)碼管繪制七段數(shù)碼管繪制七段數(shù)碼管〔seven-segmentindicator〕由7段數(shù)碼管拼接而成,每段有亮或不亮兩種情況,改良型的七段數(shù)碼管還包括一個小數(shù)點位置,如下圖。七段數(shù)碼管繪制七段數(shù)碼管能構(gòu)成27=128種不同形狀,其中部分形狀能夠顯示易于人們了解的數(shù)字或字母含義,因此被廣泛運用。圖5.5給出了十六進制中16個字符的七段數(shù)碼管表示。七段數(shù)碼管繪制每個0到9的數(shù)字都有一樣的七段數(shù)碼管款式,因此,可以經(jīng)過設(shè)計函數(shù)復(fù)用數(shù)字的繪制過程。進一步,每個七段數(shù)碼管包括7個數(shù)碼管款式,除了數(shù)碼管位置不同外,繪制風格一致,也可以經(jīng)過函數(shù)復(fù)用單個數(shù)碼段的繪制過程。七段數(shù)碼管繪制實例代碼7.1e7.1DrawSevenSegDisplay.py123456789101112131415#e7.1DrawSevenSegDisplay.pyimportturtle,datetimedefdrawLine(draw): #繪制單段數(shù)碼管turtle.pendown()ifdrawelseturtle.penup()turtle.fd(40)turtle.right(90)defdrawDigit(d):#根據(jù)數(shù)字繪制七段數(shù)碼管drawLine(True)ifdin[2,3,4,5,6,8,9]elsedrawLine(False)drawLine(True)
ifdin[0,1,3,4,5,6,7,8,9]elsedrawLine(False)drawLine(True)ifdin[0,2,3,5,6,8,9]elsedrawLine(False)drawLine(True)ifdin[0,2,6,8]elsedrawLine(False)turtle.left(90)drawLine(True)ifdin[0,4,5,6,8,9]elsedrawLine(False)drawLine(True)ifdin[0,2,3,5,6,7,8,9]elsedrawLine(False)drawLine(True)ifdin[0,1,2,3,4,7,8,9]elsedrawLine(False)七段數(shù)碼管繪制實例代碼7.1e7.1DrawSevenSegDisplay.py1617181920212223242526272829turtle.left(180)turtle.penup()turtle.fd(20)defdrawDate(date): #獲得要輸出的數(shù)字foriindate:drawDigit(eval(i)) #注意:通過eval()函數(shù)將數(shù)字變?yōu)檎麛?shù)defmain():turtle.setup(800,350,200,200)turtle.penup()turtle.fd(-300)turtle.pensize(5)drawDate(datetime.datetime.now().strftime('%Y%m%d'))turtle.hideturtle()main()七段數(shù)碼管繪制實例代碼定義了drawDigit()函數(shù),該函數(shù)根據(jù)輸入的數(shù)字d繪制七段數(shù)碼管,結(jié)合七段數(shù)碼管構(gòu)造,每個數(shù)碼管的繪制采用圖所示順序。七段數(shù)碼管繪制繪制起點在數(shù)碼管中部左側(cè),無論每段數(shù)碼管能否被繪制出來,turtle畫筆都按順序“畫完〞一切7個數(shù)碼管。對于給定數(shù)字d,哪個數(shù)碼段被繪制出來采用if…else…語句判別。8drawLine(True)ifdin[2,3,4,5,6,8,9]elsedrawLine(False)七段數(shù)碼管繪制七段數(shù)碼管繪制七段數(shù)碼管繪制實例代碼7.2 e7.2DrawSevenSegDisplay.py123456789101112131415161718192021222324#e7.2DrawSevenSegDisplay.pyimportturtle,datetimedefdrawGap():#繪制數(shù)碼管間隔turtle.penup()turtle.fd(5)defdrawLine(draw): #繪制單段數(shù)碼管drawGap()turtle.pendown()ifdrawelseturtle.penup()turtle.fd(40)drawGap()turtle.right(90)defdrawDigit(d):#根據(jù)數(shù)字繪制七段數(shù)碼管drawLine(True)ifdin[2,3,4,5,6,8,9]elsedrawLine(False)drawLine(True)ifdin[0,1,3,4,5,6,7,8,9]elsedrawLine(False)drawLine(True)ifdin[0,2,3,5,6,8,9]elsedrawLine(False)drawLine(True)ifdin[0,2,6,8]elsedrawLine(False)turtle.left(90)drawLine(True)ifdin[0,4,5,6,8,9]elsedrawLine(False)drawLine(True)ifdin[0,2,3,5,6,7,8,9]elsedrawLine(False)drawLine(True)ifdin[0,1,2,3,4,7,8,9]elsedrawLine(False)turtle.left(180)turtle.penup()turtle.fd(20)七段數(shù)碼管繪制實例代碼7.2e7.2DrawSevenSegDisplay.py25262728293031323334353637383940414243444546defdrawDate(date):turtle.pencolor("red")foriindate:ifi=='-':turtle.write('年',font=("Arial",18,"normal"))turtle.pencolor("green")turtle.fd(40)elifi=='=':turtle.write('月',font=("Arial",18,"normal"))turtle.pencolor("blue")turtle.fd(40)elifi=='+':turtle.write('日',font=("Arial",18,"normal"))else:drawDigit(eval(i))defmain():turtle.setup(800,350,200,200)turtle.penup()turtle.fd(-350)turtle.pensize(5)drawDate(datetime.datetime.now().strftime('%Y-%m=%d+'))turtle.hideturtle()main()函數(shù)的遞歸遞歸的定義函數(shù)作為一種代碼封裝,可以被其他程序調(diào)用,當然,也可以被函數(shù)內(nèi)部代碼調(diào)用。這種函數(shù)定義中調(diào)用函數(shù)自身的方式稱為遞歸。就像一個人站在裝滿鏡子的房間中,看到的影像就是遞歸的結(jié)果。遞歸在數(shù)學和計算機運用上非常強大,可以非常簡約的處理重要問題。遞歸的定義數(shù)學上有個經(jīng)典的遞歸例子叫階乘,階乘通常定義為:n!n(n1)(n2)...(1)這個關(guān)系給出了另一種方式表達階乘的方式:n0n!1n(n1)!otherwise
遞歸的運用方法微實例5.21:階乘的計算。根據(jù)用戶輸入的整數(shù)n,計算并輸出n的階乘值。微實例5.21m5.1CalFactorial.py1234567deffact(n):ifn==0:return1else:returnn*fact(n-1)num=eval(input("請輸入一個整數(shù):"))print(fact(abs(int(num))))遞歸的運用方法遞歸的運用方法微實例5.32:字符串反轉(zhuǎn)。對于用戶輸入的字符串s,輸出反轉(zhuǎn)后的字符串。處理這個問題的根本思想是把字符串看作一個遞歸對象。12defreverse(s):returnreverse(s[1:])+s[0]遞歸的運用方法察看這個函數(shù)的任務(wù)過程。s[0]是首字符,s[1:]是剩余字符串,將它們反向銜接,可以得到反轉(zhuǎn)字符串。執(zhí)行這個程序,結(jié)果如下>>>defreverse(s):returnreverse(s[1:])+s[0]>>>reverse("ABC")...RecursionError:maximumrecursiondepthexceeded科赫曲線繪制科赫曲線繪制自然界有很多圖形很規(guī)那么,符合一定的數(shù)學規(guī)律,例如,蜜蜂蜂窩是天然的等邊六角形等??坪?Koch)曲線在眾多經(jīng)典數(shù)學曲線中非常著名,由瑞典數(shù)學家馮·科赫(H·V·Koch)于1904年提出,由于其外形類似雪花,也被稱為雪花曲線。科赫曲線繪制科赫曲線繪制科赫曲線屬于分形幾何分支,它的繪制過程表達了遞歸思想,繪制過程代碼。實例代碼8.1e8.1DrawKoch.py12345678910111213141516171819#e8.1DrawKoch.pyimportturtledefkoch(size,n):ifn==0:turtle.fd(size)else:foranglein[0,60,-120,60]:turtle.left(angle)koch(size/3,n-1)defmain():turtle.setup(800,400)turtle.speed(0) #控制繪制速度turtle.penup()turtle.goto(-300,-50)turtle.pendown()turtle.pensize(2)koch(600,3) #0階科赫曲線長度,階數(shù)turtle.hideturtle()main()科赫曲線繪制實例代碼8.2e8.2DrawKoch.py123456789101112131415161718192021222324#e8.2DrawKoch.pyimportturtledefkoch(size,n):ifn==0:turtle.fd(size)else:foranglein[0,60,-120,60]:turtle.left(angle)koch(size/3,n-1)defmain():turtle.setup(600,600)turtle.speed(0)turtle.penup()turtle.goto(-200,100)turtle.pendown()turtle.pensize(2)level=5koch(400,level)turtle.right(120)koch(400,level)turtle.right(120)koch(400,level)turtle.hideturtle()main()科赫曲線的雪花效果小練習:繪制謝賓斯基三角形漢諾塔游戲小練習:漢諾塔游戲defhoniMove(self,k,x,y,z):
#turtle.Screen().clear()
ifk>1:
self.honiMove(k-1,x,z,y)
z.push(x.pop())
self.honiMove(k-1,y,x,z)
else:
z.push(x.pop())Python內(nèi)置函數(shù)Python內(nèi)置函數(shù)〔BIF〕Python解釋器提供了68個內(nèi)置函數(shù),其中大部分會經(jīng)常用到abs()id()round()compile()locals()all()input()set()dir()map()any()int()sorted()exec()memoryview()asci()len()str()enumerate()next()bin()list()tuple()filter()object()bool()max()type()format()property()chr()min()zip()frozenset()repr()complex()oct()getattr()setattr()dict()open()globals()slice()divmod()ord()bytes()hasattr()staticmethod()eval()pow()delattr()help()sum()float()print()bytearray()isinstance()super()hash()range()callable()issubclass()vars()hex()reversed()classmethod()iter()
import()
常用內(nèi)置函數(shù)內(nèi)置函數(shù)不需求導(dǎo)入任何模塊即可運用執(zhí)行下面的命令可以列出一切內(nèi)置函數(shù)>>>dir(__builtins__)Python規(guī)范庫turtleforward()pencolor()……input()print()str()range()……time……………………………………函數(shù)功能簡要說明abs(x)返回數(shù)字x的絕對值或復(fù)數(shù)x的模all(iterable)如果對于可迭代對象中所有元素x都等價于True,也就是對于所有元素x都有bool(x)等于True,則返回True。對于空的可迭代對象也返回Trueany(iterable)只要可迭代對象iterable中存在元素x使得bool(x)為True,則返回True。對于空的可迭代對象,返回Falseascii(obj)把對象轉(zhuǎn)換為ASCII碼表示形式,必要的時候使用轉(zhuǎn)義字符來表示特定的字符bin(x)把整數(shù)x轉(zhuǎn)換為二進制串表示形式bool(x)返回與x等價的布爾值True或Falsebytes(x)生成字節(jié)串,或把指定對象x轉(zhuǎn)換為字節(jié)串表示形式callable(obj)測試對象obj是否可調(diào)用。類和函數(shù)是可調(diào)用的,包含__call__()方法的類的對象也是可調(diào)用的compile()用于把Python代碼編譯成可被exec()或eval()函數(shù)執(zhí)行的代碼對象complex(real,[imag])返回復(fù)數(shù)chr(x)返回Unicode編碼為x的字符常用內(nèi)置函數(shù)函數(shù)功能簡要說明delattr(obj,name)刪除屬性,等價于deldir(obj)返回指定對象或模塊obj的成員列表,如果不帶參數(shù)則返回當前作用域內(nèi)所有標識符divmod(x,y)返回包含整商和余數(shù)的元組((x-x%y)/y,x%y)enumerate(iterable[,start])返回包含元素形式為(0,iterable[0]),(1,iterable[1]),(2,iterable[2]),...的迭代器對象eval(s[,globals[,locals]])計算并返回字符串s中表達式的值exec(x)執(zhí)行代碼或代碼對象xexit()退出當前解釋器環(huán)境filter(func,seq)返回filter對象,其中包含序列seq中使得單參數(shù)函數(shù)func返回值為True的那些元素,如果函數(shù)func為None則返回包含seq中等價于True的元素的filter對象float(x)把整數(shù)或字符串x轉(zhuǎn)換為浮點數(shù)并返回frozenset([x]))創(chuàng)建不可變的字典對象getattr(obj,name[,default])獲取對象中指定屬性的值,等價于,如果不存在指定屬性則返回default的值,如果要訪問的屬性不存在并且沒有指定default則拋出異常續(xù)表1常用內(nèi)置函數(shù)函數(shù)功能簡要說明globals()返回包含當前作用域內(nèi)全局變量及其值的字典hasattr(obj,name)測試對象obj是否具有名為name的成員hash(x)返回對象x的哈希值,如果x不可哈希則拋出異常help(obj)返回對象obj的幫助信息hex(x)把整數(shù)x轉(zhuǎn)換為十六進制串id(obj)返回對象obj的標識(內(nèi)存地址)input([提示])顯示提示,接收鍵盤輸入的內(nèi)容,返回字符串int(x[,d])返回實數(shù)(float)、分數(shù)(Fraction)或高精度實數(shù)(Decimal)x的整數(shù)部分,或把d進制的字符串x轉(zhuǎn)換為十進制并返回,d默認為十進制isinstance(obj,class-or-type-or-tuple)測試對象obj是否屬于指定類型(如果有多個類型的話需要放到元組中)的實例iter(...)返回指定對象的可迭代對象len(obj)返回對象obj包含的元素個數(shù),適用于列表、元組、集合、字典、字符串以及range對象和其他可迭代對象續(xù)表2常用內(nèi)置函數(shù)函數(shù)功能簡要說明list([x])、set([x])、tuple([x])、dict([x])把對象x轉(zhuǎn)換為列表、集合、元組或字典并返回,或生成空列表、空集合、空元組、空字典locals()返回包含當前作用域內(nèi)局部變量及其值的字典map(func,*iterables)返回包含若干函數(shù)值的map對象,函數(shù)func的參數(shù)分別來自于iterables指定的每個迭代對象,max(x)、min(x)返回可迭代對象x中的最大值、最小值,要求x中的所有元素之間可比較大小,允許指定排序規(guī)則和x為空時返回的默認值next(iterator[,default])返回可迭代對象x中的下一個元素,允許指定迭代結(jié)束之后繼續(xù)迭代時返回的默認值oct(x)把整數(shù)x轉(zhuǎn)換為八進制串open(name[,mode])以指定模式mode打開文件name并返回文件對象ord(x)返回1個字符x的Unicode編碼pow(x,y,z=None)返回x的y次方,等價于x**y或(x**y)%z續(xù)表3常用內(nèi)置函數(shù)函數(shù)功能簡要說明print(value,...,sep='',end='\n',file=sys.stdout,flush=False)基本輸出函數(shù)quit()退出當前解釋器環(huán)境range([start,]end[,step])返回range對象,其中包含左閉右開區(qū)間[start,end)內(nèi)以step為步長的整數(shù)reduce(func,sequence[,initial])將雙參數(shù)的函數(shù)func以迭代的方式從左到右依次應(yīng)用至序列seq中每個元素,最終返回單個值作為結(jié)果。在Python2.x中該函數(shù)為內(nèi)置函數(shù),在Python3.x中需要從functools中導(dǎo)入reduce函數(shù)再使用repr(obj)返回對象obj的規(guī)范化字符串表示形式,對于大多數(shù)對象有eval(repr(obj))==objreversed(seq)返回seq(可以是列表、元組、字符串、range以及其他可迭代對象)中所有元素逆序后的迭代器對象續(xù)表4常用內(nèi)置函數(shù)函數(shù)功能簡要說明round(x[,小數(shù)位數(shù)])對x進行四舍五入,若不指定小數(shù)位數(shù),則返回整數(shù)sorted(iterable,key=None,reverse=False)返回排序后的列表,其中iterable表示要排序的序列或迭代對象,key用來指定排序規(guī)則或依據(jù),reverse用來指定升序或降序。該函數(shù)不改變iterable內(nèi)任何元素的順序str(obj)把對象obj直接轉(zhuǎn)換為字符串sum(x,start=0)返回序列x中所有元素之和,要求序列x中所有元素必須為數(shù)字,允許指定起始值start,返回start+sum(x)type(obj)返回對象obj的類型zip(seq1[,seq2[...]])返回zip對象,其中元素為(seq1[i],seq2[i],...)形式的元組,最終結(jié)果中包含的元素個數(shù)取決于所有參數(shù)序列或可迭代對象中最短的那個續(xù)表5常用內(nèi)置函數(shù)常用內(nèi)置函數(shù)dir()函數(shù)可以查看指定模塊中包含的一切成員或者指定對象類型所支持的操作。help()函數(shù)那么前往指定模塊或函數(shù)的闡明文檔。importtimedir(time)help(time)常用內(nèi)置函數(shù)ord()和chr()是一對功能相反的函數(shù),ord()用來前往單個字符的序數(shù)或Unicode碼,chr()用來前往某序數(shù)對應(yīng)的字符str()那么直接將其恣意類型參數(shù)轉(zhuǎn)換為字符串。>>>ord('a')97>>>chr(65)'A'>>>chr(ord('A')+1)'B'>>>str(1)'1'>>>str(1234)'1234'>>>str([1,2,3])'[1,2,3]'>>>str((1,2,3))'(1,2,3)'>>>str({1,2,3})'set([1,2,3])'常用內(nèi)置函數(shù)max()、min()、sum()這三個內(nèi)置函數(shù)分別用于計算列表、元組或其他可迭代對象中一切元素最大值、最小值以及一切元素之和,sum()要求元素支持加法運算,max()和min()那么要求序列或可迭代對象中的元素之間可比較大小。>>>importrandom>>>a=[random.randint(1,100)foriinrange(10)]#列表推導(dǎo)式>>>a[72,26,80,65,34,86,19,74,52,40]>>>print(max(a),min(a),sum(a))8619548假設(shè)需求計算該列表中的一切元素的平均值,可以直接這樣用:>>>sum(a)*1.0/len(a)#Python2.7.1254.8>>>sum(a)/len(a)#Python3.5.254.8常用內(nèi)置函數(shù)內(nèi)置函數(shù)max()和min()的key參數(shù)可以用來指定比較規(guī)那么>>>x=['21','1234','9']>>>max(x)'9'>>>max(x,key=len)'1234'>>>max(x,key=int)'1234'常用內(nèi)置函數(shù)內(nèi)置函數(shù)type()和isinstance()可以判別數(shù)據(jù)類型。>>>type([3])#查看[3]的類型<class'list'>>>>type({3})in(list,tuple,dict)#判別{3}能否為list,tuple或dict類型的實例False>>>isinstance(3,int)#判別3能否為int類型的實例True>>>isinstance(3j,(int,float,complex))#判別3能否為int,float或complex類型True常用內(nèi)置函數(shù)range()是非經(jīng)常用的內(nèi)置函數(shù),語法格式為range([start,]end[,step])。該函數(shù)前往具有惰性求值特點的range對象,其中包含左閉右開區(qū)間[start,end)內(nèi)以step為步長的整數(shù)。參數(shù)start默以為0,step默以為1。>>>range(5)#start默以為0,step默以為1range(0,5)>>>list(_)[0,1,2,3,4]>>>list(range(1,10,2))#指定起始值和步長[1,3,5,7,9]>>>list(range(9,0,-2))#步長為負數(shù)時,start應(yīng)比end大[9,7,5,3,1]常用內(nèi)置函數(shù)sorted()對列表、元組、字典、集合或其他可迭代對象進展排序并前往新列表,reversed()對可迭代對象〔生成器對象和具有惰性求值特性的zip、map、filter、enumerate等類似對象除外〕進展翻轉(zhuǎn)〔首尾交換〕并前往可迭代的reversed對象。>>>x=['aaaa','bc','d','b','ba']>>>sorted(x,key=lambdaitem:(len(item),item))#先按長度排序,長度一樣的正常排序['b','d','ba','bc','aaaa']>>>reversed(x)#逆序,前往reversed對象<list_reverseiteratorobjectat0x0000000003089E48>>>>list(reversed(x))#reversed對象是可迭代的[5,1,9,3,8,7,10,6,0,4,2]常用內(nèi)置函數(shù)內(nèi)置函數(shù)map()把一個函數(shù)func依次映射到序列或迭代器對象的每個元素上,并前往一個可迭代的map對象作為結(jié)果,map對象中每個元素是原序列中元素經(jīng)過函數(shù)func處置后的結(jié)果。>>>list(map(str,range(5)))#把列表中元素轉(zhuǎn)換為字符串['0','1','2','3','4']>>>defadd5(v):
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年家庭過期藥品回收服務(wù)合同
- 2026年城市公共設(shè)施合同
- 2025年多功能養(yǎng)老社區(qū)項目可行性研究報告
- 2025年生物質(zhì)能源研發(fā)項目可行性研究報告
- 2025年氫燃料電池汽車產(chǎn)業(yè)鏈可行性研究報告
- 2025年智慧城市大數(shù)據(jù)中心可行性研究報告
- 保種協(xié)議書范本
- 供料協(xié)議書范本
- 2025年人工智能大數(shù)據(jù)應(yīng)用項目可行性研究報告
- 理財保險合同協(xié)議
- 2025四川資陽現(xiàn)代農(nóng)業(yè)發(fā)展集團有限公司招聘1人筆試歷年參考題庫附帶答案詳解
- 2025年10月自考04184線性代數(shù)經(jīng)管類試題及答案含評分參考
- 國開2025年秋《心理學》形成性考核練習1-6答案
- 科技研發(fā)項目管理辦法
- 個體診所藥品清單模板
- 267條表情猜成語【動畫版】
- GB/T 34891-2017滾動軸承高碳鉻軸承鋼零件熱處理技術(shù)條件
- 國家開放大學電大本科《理工英語4》2022-2023期末試題及答案(試卷號:1388)
- 突發(fā)公共衛(wèi)生事件處置記錄表
- 撲救初期火災(zāi)的程序和措施
- 檢驗科授權(quán)書
評論
0/150
提交評論