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

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

python學習筆記2

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

高階函數

通俗的來講,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
亚洲综合精品一区二区| 日韩av综合中文字幕| xxxxx成人.com| 国产精品女主播视频| 91久久久久久久久| 亚洲国产日韩精品在线| 7m精品福利视频导航| 九九久久久久99精品| 国产精品久久久久77777| 2024亚洲男人天堂| 狠狠色狠狠色综合日日小说| 91久久国产精品91久久性色| 国产精品久久久久久搜索| www.亚洲免费视频| 日韩免费观看视频| 欧美激情综合色综合啪啪五月| 欧美精品免费播放| 精品免费在线视频| 国产网站欧美日韩免费精品在线观看| 亚洲欧美日韩国产中文| 日韩国产欧美精品在线| 欧美激情一区二区三级高清视频| 国产精品女视频| 国产欧美婷婷中文| 欧美极品少妇xxxxⅹ免费视频| 国产成人精品免费久久久久| 国产精品18久久久久久首页狼| 亚洲精品综合久久中文字幕| 亚洲色图偷窥自拍| 91精品国产成人| 欧美插天视频在线播放| 亚洲老司机av| 国产成人精品在线播放| 国产成人亚洲综合| 一区二区中文字幕| 欧美高清视频一区二区| 91在线视频导航| 欧美一区二区大胆人体摄影专业网站| 亚洲欧洲国产精品| 亚洲国产欧美日韩精品| 亚洲偷欧美偷国内偷| 欧美日韩中文字幕| 久久久亚洲欧洲日产国码aⅴ| 欧美在线视频免费| 精品成人乱色一区二区| 热久久这里只有精品| 5566成人精品视频免费| 国产日韩欧美91| 97在线视频免费观看| 亚洲国产高清高潮精品美女| 日韩av中文字幕在线播放| 亚洲一区二区三区久久| 国产精品午夜一区二区欲梦| 久久久久久久国产精品| 亚洲欧美另类在线观看| 欧美一区二区三区……| 97在线日本国产| 欧美日韩国产成人在线| 中文字幕亚洲第一| 中文字幕av一区中文字幕天堂| 国产精品久久久久高潮| 亚洲欧美一区二区三区久久| 国产有码在线一区二区视频| 91精品久久久久久久久中文字幕| 日韩理论片久久| 国产经典一区二区| 亚洲国产天堂网精品网站| 国产精品视频网站| 国产精品r级在线| 久久久久久久久国产| 性欧美xxxx交| 成人激情视频在线| 一本久久综合亚洲鲁鲁| 国产精品久久久精品| 国产精品欧美日韩一区二区| 欧美精品在线播放| 久久在线精品视频| 国产成人精品一区| 欧美国产高跟鞋裸体秀xxxhd| 色哟哟亚洲精品一区二区| 亚洲乱亚洲乱妇无码| 欧美亚洲日本网站| 国产精品色婷婷视频| 亚洲人成自拍网站| 日韩av免费在线| 亚洲美女在线看| 亚洲韩国日本中文字幕| 国产黑人绿帽在线第一区| 一区二区三区视频免费在线观看| 国产日韩欧美在线播放| 亚洲精品色婷婷福利天堂| 亚洲成人1234| 国产欧美一区二区| 精品欧美aⅴ在线网站| 国产精品海角社区在线观看| 日韩欧美亚洲成人| 日韩av网站电影| 国产精品国产三级国产aⅴ浪潮| 国产精品高潮呻吟视频| 夜夜躁日日躁狠狠久久88av| 在线播放国产一区中文字幕剧情欧美| 日韩电视剧免费观看网站| 久久亚洲国产成人| 一区二区中文字幕| 国产美女91呻吟求| 欧美精品制服第一页| 欧美精品九九久久| 亚洲人成欧美中文字幕| 国产精品日韩欧美大师| 午夜精品一区二区三区av| 欧美成人自拍视频| 日韩欧美精品在线观看| 亚洲片在线资源| 91理论片午午论夜理片久久| 欧美日本亚洲视频| 亚洲91精品在线观看| 国产精品久久久久久五月尺| 亚洲女人被黑人巨大进入| 亚洲电影免费观看高清| 日韩免费看的电影电视剧大全| 国产精品91视频| 狠狠色狠色综合曰曰| 久久深夜福利免费观看| 精品国产乱码久久久久久婷婷| 亚洲女人被黑人巨大进入al| 一本色道久久88亚洲综合88| 精品一区二区亚洲| 亚洲国产一区二区三区四区| 久久视频精品在线| 在线视频亚洲欧美| 日韩中文字幕视频在线| 自拍亚洲一区欧美另类| 亚洲日本中文字幕| 国产精品pans私拍| 欧美电影免费观看网站| 日韩电影在线观看永久视频免费网站| 97久久超碰福利国产精品…| 色午夜这里只有精品| 91社影院在线观看| 亚洲a中文字幕| 亚洲欧美中文字幕在线一区| 国产啪精品视频网站| 精品国产自在精品国产浪潮| 亚洲美女在线视频| 亚洲精品综合精品自拍| 日韩欧美在线免费观看| 欧美巨大黑人极品精男| 热re99久久精品国产66热| 欧美视频13p| 亚洲欧美变态国产另类| 中文字幕欧美日韩va免费视频| 日韩欧美极品在线观看| 国产精品久久久久久影视| 麻豆国产va免费精品高清在线| 富二代精品短视频| 久久久久久噜噜噜久久久精品| 亚洲毛茸茸少妇高潮呻吟| 成人精品一区二区三区| 欧美有码在线视频| 91视频-88av| 久久五月天综合| 亚洲欧美中文日韩v在线观看| 综合网日日天干夜夜久久| 成人日韩在线电影|