一、上節(jié)回顧
Python2與Python3字符編碼問題,不管你是初學者還是已經(jīng)對Python的項目了如指掌了,都會犯一些編碼上面的錯誤。我在這里簡單歸納Python3和Python2各自的區(qū)別。
首先是Python3-->代碼文件都是用utf-8來解釋的。將代碼和文件讀到內(nèi)存中就變成了Unicode,這也就是為什么Python只有encode沒有decode了,因為內(nèi)存中都將字符編碼變成了Unicode,而Unicode是萬國碼,可以“翻譯”所以格式編碼的格式。Python3中str和bytes是兩種格式,bytes可以當做二進制的表現(xiàn)形式。
Python2使用系統(tǒng)默認的字符編碼解釋代碼,所以要用utf-8解釋代碼,就必須在頭部申明;并且Python2中有解碼和編碼,但是解碼動作是必須的而編碼動作可以忽略,因為Python代碼加載到內(nèi)存中就是Unicode,這一點和python3一樣;Python2中還需要注意的就是str和bytes是一個意思。Python2 里面的str就是Python3中的bytes格式,而Python3中的str其實就是Unicode.
函數(shù)基礎(chǔ)(這里我就是用遞歸函數(shù)中的二分查找)
為什么使用函數(shù):將將程序進行模塊設計
定義函數(shù)有三種形式:
- 無參函數(shù)
- 有參函數(shù)
- 空函數(shù)
PS:如果函數(shù)有多個返回值,那么返回的來的數(shù)據(jù)格式是元組
- 如何在函數(shù)傳入?yún)?shù)時限定參數(shù)數(shù)據(jù)格式。
def leon(x:int,y:int)->int:
pass
其中這里指定了x,y都必須是int類型 " -> "的意思是函數(shù)返回值也必須是int類型
print(yan.__annotations__):顯示形參的限定數(shù)據(jù)格式以及返回值的格式
a = [1,2,3,4,5,7,9,10,11,12,14,15,16,17,19,21] #形參中的numdef calc(num,find_num): print(num) mid = int(len(num) / 2) #中間數(shù)的下標 if mid == 0: #遞歸函數(shù)非常重要的判斷條件 if num[mid] == find_num: print("find it %s"%find_num) else: print("cannt find num") if num[mid] == find_num: #直接找到不用遞歸,結(jié)束函數(shù) print("find_num %s"%find_num) elif num[mid] > find_num: #find_num應該在左邊,向下遞歸 calc(num[0:mid],find_num) elif num[mid] < find_num: #find_num應該在右邊,向下遞歸 calc(num[mid+1:],find_num)calc(a,12)匿名函數(shù)
c = lambda x:x+1 #x就是形參,c就是這個匿名函數(shù)的對象print(c(22))
高階函數(shù)-特性
1. 把一個函數(shù)的內(nèi)存地址傳給另外一個函數(shù),當做參數(shù)
2.一個函數(shù)把另外一個函數(shù)的當做返回值返回
def calc(a,b,c):print(c(a) + c(b))calc(-5,10,abs) #引用上一節(jié)的實例,將-5和10絕對值相加
二、高階函數(shù)(補充)
函數(shù)是第一類對象
函數(shù)可以被賦值
可以被當做參數(shù)
可以當做返回值
可以作為容器類型的元素
#函數(shù)可以被賦值def leon(): print("in the leon")l = leonl()#函數(shù)可以被當做參數(shù)def yan(x): #這里x形參,其實就是我們調(diào)用實參的函數(shù)名 x() #運行函數(shù)y = yan(leon)#函數(shù)當做返回值def jian(x): 和上面一樣這這也必須傳入一個函數(shù) return xj = jian(leon) #這里需要注意一點就是這里的意思是運行jian這個函數(shù)而這個函數(shù)返回的是x 也就是leon這個函數(shù)的內(nèi)存地址,也就是說這時候leon這個函數(shù)并沒有被執(zhí)行j() #運行 leon函數(shù)#可以做為容器類型的元素leon_dict = {"leon":leon}leon_dict["leon"]() #這樣也可以運行l(wèi)eon這個函數(shù)
新聞熱點
疑難解答