国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 会同县| 汤原县| 阿克苏市| 南川市| 噶尔县| 桃江县| 漳平市| 阿巴嘎旗| 罗甸县| 隆林| 淮滨县| 美姑县| 南溪县| 贵港市| 定陶县| 板桥市| 永州市| 富裕县| 高尔夫| 滨州市| 岳池县| 三都| 当阳市| 甘谷县| 佛冈县| 达孜县| 曲麻莱县| 东至县| 巩义市| 吉林省| 永康市| 麻城市| 香河县| 梁河县| 西丰县| 赫章县| 西宁市| 静乐县| 陆良县| 上思县| 信丰县|