亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

python學習筆記2

2019-11-14 12:40:22
字體:
來源:轉載
供稿:網友

高階函數

通俗的來講,python的高階函數的形參變量可以接受函數,類似于c語言的函數指針

例如:

# 變量f可以傳入一個函數def add(a,b,f): return f(a)+f(b)add(-5,5,abs)#輸出結果是10

python內置的高階函數

map()

map()是 Python 內置的高階函數,它接收一個函數 f 和一個 list,并通過把函數 f 依次作用在 list 的每個元素上,得到一個新的 list 并返回。

def format_name(s): return s[:1].upper()+s[1:].lower()PRint map(format_name, ['adam', 'LISA', 'barT'])

reduce()

reduce()函數也是Python內置的一個高階函數。reduce()函數接收的參數和 map()類似,一個函數 f,一個list,但行為和 map()不同,reduce()傳入的函數 f 必須接收兩個參數,reduce()對list的每個元素反復調用函數f,并返回最終結果值

def prod(x, y): return x*yprint reduce(prod, [2, 4,5])#輸出:40print reduce(prod, [2, 4,5],10)#輸出 400,先計算[..],在把10傳入

filter()函數

filter()函數是 Python 內置的另一個有用的高階函數,filter()函數接收一個函數 f 和一個list,這個函數 f 的作用是對每個元素進行判斷,返回 True或 False,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。

import mathdef is_sqr(x): return math.sqrt(x)%1==0 print filter(is_sqr, range(1,101))# 輸出:# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

sorted()函數

但 sorted()也是一個高階函數,它可以接收一個比較函數來實現自定義排序,比較函數的定義是,傳入兩個待比較的元素 x, y,如果 x 應該排在 y 的前面,返回 -1,如果 x 應該排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。

def cmp_ignore_case(s1, s2): if s1.lower() < s2.lower(): return -1 elif s1.lower() > s2.lower(): return 1 else: return 0print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)# 輸出:# ['about', 'bob', 'Credit', 'Zoo']

返回函數

Python的函數不但可以返回int、str、list、dict等數據類型,還可以返回函數

函數calc_prod(lst),它接收一個list,返回一個函數,返回函數可以計算參數的乘積

def calc_prod(lst): def prod(x,y): return x*y def lazy_prod(): return reduce(prod,lst) return lazy_prodf = calc_prod([1, 2, 3, 4])print f()# 輸出:24

閉包

內層函數引用了外層函數的變量(參數也算變量),然后返回內層函數的情況,稱為閉包(Closure)。

閉包的特點是返回的函數還引用了外層函數的局部變量,所以,要正確使用閉包,就要確保引用的局部變量在函數返回后不能變。

# -*- coding: utf-8 -*-def count(): fs = [] for i in range(1, 4): print '函數賦值給變量時執行' def f(): print '接受函數的變量執行時調用' return i*i fs.append(f) return fsf1, f2, f3 = count()print f1()print f2()print f3()

輸出:

函數賦值給變量時執行函數賦值給變量時執行函數賦值給變量時執行接受函數的變量執行時調用9接受函數的變量執行時調用9接受函數的變量執行時調用9

匿名函數

關鍵字lambda 表示匿名函數,冒號前面的 x 表示函數參數。 匿名函數有個限制,就是只能有一個表達式,不寫return,返回值就是該表達式的結果。

# 返回字符串,首字母大寫,其他字母小寫>>> map(lambda s:s[:1].upper()+s[1:].lower(),['barT','lISA','maggie'])['Bart', 'Lisa', 'Maggie']# 返回列表大于0的數值# lambda x: True if x>0 else False解釋:# 傳入x,x>0返回True否則返回False>>> print filter(lambda x: True if x>0 else False,[-1,1,-2,2,-3,3] )[1, 2, 3]

python的裝飾器

如果定義了一個函數,想要在運行時候動態增加功能,又不想改動函數本身代碼

>>> def f_old(x):... return x*x...>>> def f_new(f):... def fn(x):... print 'fn()...'... return f(x)... return fn...# 第一種調用方法>>> g = f_new(f_old)>>> g(3)fn()...9# 第二種調用方法,完全隱藏了f_old()函數>>> f_old=f_new(f_old)>>> f_old(3)fn()...9# 第三種>>> @f_new... def f2(x):... return 2*x...>>> f2(3)fn()...6

不帶參數的decorater

打印函數調用時間

import timedef performance(f): def fn(*args,**kw): t1=time.time() res=f(*args,**kw) t2=time.time() #print 'call'+f.__name__+'()...'+(t2-t1) print 'call %s() in %fs' %(f.__name__, (t2 - t1)) return res return fn@performancedef factorial(n): return reduce(lambda x,y: x*y, range(1, n+1))print factorial(10)# 輸出:# call factorial() in 0.000696s# 3628800

帶參數的decorater

請給 @performace 增加一個參數,允許傳入’s’或’ms’:

import timedef performance(unit): def log(f): def fn(*args,**kw): t1 = time.time() res = f(*args,**kw) t2 = time.time() if unit == 'ms': t = (t2-t1)*1000 else: t= t2-t1 print ('call %s() in %f %s')%(f.__name__,t,unit) return res return fn return log@performance('s')def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1))print factorial(10)# 輸出:# call factorial() in 0.005046 s# 3628800

偏函數

簡化函數的參數默認值 例子中sorted函數的參數有兩個(list,cmp),第一個是列表,第二個是重寫的比較函數

import functoolssorted_ignore_case = functools.partial(sorted,cmp=lambda a,b:cmp(a.upper(),b.upper()))print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])# 輸出:# ['about', 'bob', 'Credit', 'Zoo']
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲aⅴaaaaaa毛片| 国产欧美日韩丝袜精品一区| 久久久久久久久国产精品| 国内精品久久久久久中文字幕| 欧美亚洲一级片| 日日骚久久av| 欧洲中文字幕国产精品| 97超级碰碰碰| 成人午夜黄色影院| 国产精品电影久久久久电影网| 欧美丝袜一区二区| 成人羞羞国产免费| 日韩美女在线观看一区| 亚洲福利影片在线| 国产午夜精品久久久| 国产成人综合精品| 亚洲欧美制服丝袜| 久久精品精品电影网| 成人午夜激情网| 插插插亚洲综合网| 日韩中文字幕在线视频| 国产欧美日韩精品专区| 2021久久精品国产99国产精品| 国产女同一区二区| 欧美激情一区二区久久久| 欧美激情喷水视频| 国产精品入口尤物| 日韩经典中文字幕在线观看| 这里只有精品在线观看| 亚洲欧美精品中文字幕在线| 国产精品福利网站| 亚洲国产精品国自产拍av秋霞| 57pao成人永久免费视频| 久久国产精品亚洲| 亚洲一区免费网站| 在线一区二区日韩| 日韩网站免费观看高清| 91在线网站视频| 亚洲欧洲在线观看| 97精品久久久中文字幕免费| 亚洲成人av中文字幕| 狠狠色噜噜狠狠狠狠97| 亚洲成人精品av| 日韩在线视频免费观看高清中文| 欧美乱人伦中文字幕在线| 国产精品流白浆视频| 日韩亚洲成人av在线| 国产视频精品久久久| 国产成人精品视频在线| 亚洲春色另类小说| 插插插亚洲综合网| 亚洲成人a级网| 麻豆国产精品va在线观看不卡| 色综合天天综合网国产成人网| 欧美成人小视频| 久久久精品影院| 久久91亚洲精品中文字幕| 亚洲v日韩v综合v精品v| 国产98色在线| 欧美激情亚洲视频| 国产98色在线| 2019中文字幕免费视频| 国内外成人免费激情在线视频| 精品偷拍各种wc美女嘘嘘| 久久久久久久久国产精品| 精品国内亚洲在观看18黄| 欧美午夜片欧美片在线观看| 国产一区玩具在线观看| 成人性教育视频在线观看| 黑人精品xxx一区一二区| 久久久久久久一区二区三区| 欧美极品少妇xxxxⅹ免费视频| 日韩一区二区欧美| 91在线免费看网站| 国产成人精品一区二区三区| 亚洲人成伊人成综合网久久久| 午夜精品www| 亚洲美女www午夜| 日韩精品免费在线播放| 日韩成人在线视频网站| 日韩精品免费在线观看| 综合网日日天干夜夜久久| 欧美日韩国产激情| 欧美成人三级视频网站| 国产成人一区二区三区电影| 亚洲在线www| 狠狠躁夜夜躁人人躁婷婷91| 欧美性猛交xxxx黑人猛交| 51ⅴ精品国产91久久久久久| 国产精品视频999| 国产不卡av在线| 久久久久久999| 中文字幕日韩在线播放| 久久天堂av综合合色| 国产精品亚洲一区二区三区| 欧美日本在线视频中文字字幕| 欧美伦理91i| 国产福利精品在线| 国产精品免费电影| 欧美夫妻性生活视频| 中文字幕国产精品| 国产精品亚洲片夜色在线| 91久久精品日日躁夜夜躁国产| 日韩久久免费电影| 91精品在线观看视频| 欧美日韩精品在线视频| 亚洲成人1234| 亚洲国产精品人久久电影| 热久久免费国产视频| 亚洲一级免费视频| 日韩免费电影在线观看| 色狠狠久久aa北条麻妃| 欧美视频一区二区三区…| 国产成人精品av在线| 国产一区二区三区在线| 中文字幕日韩综合av| 亚洲精品aⅴ中文字幕乱码| 欧美性资源免费| 中文字幕日韩欧美精品在线观看| 国产精品劲爆视频| 久久精品国产欧美激情| 欧美精品videosex牲欧美| 久久影院在线观看| 国产成人精品免费视频| 欧美极品少妇与黑人| 久久97久久97精品免视看| 日韩欧美中文字幕在线播放| 国产精品青草久久久久福利99| 亚洲国产欧美在线成人app| 欧美剧在线观看| 国产经典一区二区| 久久天天躁日日躁| 久久最新资源网| 亚洲伊人久久大香线蕉av| 大桥未久av一区二区三区| 欧美激情在线视频二区| 精品视频在线播放免| 欧美一级片免费在线| 国产精品久久一区主播| 韩国精品久久久999| 成人性教育视频在线观看| 亚洲黄色有码视频| 久久精品99久久久久久久久| 亚洲一二在线观看| 亚洲大胆人体在线| 中文字幕久久精品| 亚洲欧美日韩天堂| 日韩精品在线视频美女| 国产精品一区二区三区毛片淫片| 国产成一区二区| 亚洲四色影视在线观看| 国产欧美精品一区二区三区介绍| 精品日韩中文字幕| 亚洲成人久久电影| 久久久噜噜噜久久久| 久久久久成人网| 91影院在线免费观看视频| 91麻豆国产语对白在线观看| 成人亚洲综合色就1024| 久久综合国产精品台湾中文娱乐网| 国内精品国产三级国产在线专| 97在线视频免费| 欧美精品videossex88| www.美女亚洲精品|