国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

詳談Python高階函數(shù)與函數(shù)裝飾器(推薦)

2020-02-16 10:20:42
字體:
供稿:網(wǎng)友

一、上節(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ù)            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 焦作市| 衡东县| 宁城县| 开鲁县| 潼南县| 石阡县| 安阳县| 天台县| 松江区| 宣化县| 金秀| 辽阳市| 双柏县| 汉寿县| 贡觉县| 和硕县| 海林市| 永春县| 临武县| 江门市| 怀化市| 福州市| 濉溪县| 天镇县| 清河县| 昌平区| 昭觉县| 自治县| 光山县| 商城县| 东安县| 静海县| 建德市| 丰都县| 丹凤县| 新平| 卢龙县| 阿拉尔市| 全椒县| 宁化县| 湟源县|