濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Python進(jìn)階之高級(jí)用法詳細(xì)總結(jié)

Python進(jìn)階之高級(jí)用法詳細(xì)總結(jié)

熱門(mén)標(biāo)簽:哈爾濱ai外呼系統(tǒng)定制 唐山智能外呼系統(tǒng)一般多少錢(qián) 海南400電話如何申請(qǐng) 激戰(zhàn)2地圖標(biāo)注 公司電話機(jī)器人 白銀外呼系統(tǒng) 陜西金融外呼系統(tǒng) 騰訊外呼線路 廣告地圖標(biāo)注app

一、Lambda表達(dá)式

Lambda表達(dá)式又被稱(chēng)之為匿名函數(shù)
格式
lambda 參數(shù)列表:函數(shù)體

def add(x,y): 
	return x+y 
print(add(3,4))
#上面的函數(shù)可以寫(xiě)成Lambda函數(shù)
add_lambda=lambda x,y:x+y 
add_lambda(3,4)

二、map函數(shù)

函數(shù)就是有輸入和輸出,map的輸入和輸出對(duì)應(yīng)關(guān)系如下圖所示:

就是要把一個(gè)可迭代的對(duì)象按某個(gè)規(guī)則映射到新的對(duì)象上。
因此map函數(shù)要有兩個(gè)參數(shù),一個(gè)是映射規(guī)則,一個(gè)是可迭代對(duì)象。

list1=[1,2,3,4,5]
r=map(lambda x:x+x,list)
print(list1(r))

結(jié)果:[2,4,6,8,10]

m1=map(lambda x,y:x*x+y,[1,2,3,4,5],[1,2,3,4,5])
print(list(ml))

結(jié)果:[2,6,12,20,30]

三、filter函數(shù)

filter的輸入和輸出對(duì)應(yīng)關(guān)系如下圖所示:

def is_not_none(s): 
	return s and len(s.strip())>0
list2=['','','hello','xxxx', None,'ai']
result=filter(is_not_none, list2)
print(list(result))

結(jié)果:[‘hello',‘xxxx',‘a(chǎn)i']

四、reduce函數(shù)

from functools import reduce
f=lambda x,y:x+y x=reduce(f,[1,2,3,4,5])
print(r)

結(jié)果:15=1+2+3+4+5
相當(dāng)于每一次計(jì)算都是基于前一次計(jì)算的結(jié)果:

還可以為reduce計(jì)算添加初始值:

from functools import reduce
f=lambda x,y:x+y x=reduce(f,[1,2,3,4,5],10)
print(r)

結(jié)果:25=10+1+2+3+4+5

五、三大推導(dǎo)式

5.1 列表推導(dǎo)式

list1=[1,2,3,4,5,6]
f=map(lambda x:x+x,list1)
print(list(f))
list2=[i+i for i in list1]
print(list2)
list3=[i**3 for i in list1]
print(list3)
#篩選列表的例子
list4=[i*4 for i in list1 if i>3]
print(list4)
#結(jié)果
[2,4,6,8,10,12]
[2,4,6,8,10,12]
[1,8,27,64,125,216]
[16,25,36]

5.2 集合推導(dǎo)式

直接把上面代碼copy下來(lái),然后把列表改成集合

list1={1,2,3,4,5,6}

list2={i+i for i in list1}
print(list2)
list3={i**3 for i in list1}
print(list3)
#篩選列表的例子
list4={i*4 for i in list1 if i>3}
print(list4)
#結(jié)果

{2, 4, 6, 8, 10, 12}
{64, 1, 8, 216, 27, 125}#這里是亂序的
{16, 24, 20}

5.3 字典推導(dǎo)式

s={
"zhangsan":20,
"lisi":15,
"wangwu":31
}
#拿出所有的key,并變成列表
s_key=[ key for key, value in s.items()]
print(s_key)
#結(jié)果
['zhangsan','lisi','wangwu']

# 交換key和value位置,注意冒號(hào)的位置
s1={ value: key for key, value in s.items()}
print(s1)
#結(jié)果
{20:'zhangsan',15:'1isi',31:'wangwu'}

s2={ key: value for key, value in s.items() if key=="1isi"}
print(s2)
#結(jié)果
{"lisi":15}

六、閉包

閉包:一個(gè)返回值是函數(shù)的函數(shù)

import time 
def runtime(): 
	def now_time(): 
		print(time.time())
	return now_time #返回值是函數(shù)名字
f=runtime()#f就被賦值為一個(gè)函數(shù)now_time()了
f()#運(yùn)行f相當(dāng)于運(yùn)行now_time()

再來(lái)看一個(gè)帶參數(shù)的例子:
假設(shè)有一個(gè)csv文件,內(nèi)容有三行,具體如下:

a,b,c,d,e
1,2,3,4,5
6,7,8,9,10

def make_filter(keep):# keep=8
	def the_filter(file_name): 
		file=open(file name)#打開(kāi)文件
		lines=file.readlines()#按行讀取文件
		file.close()#關(guān)閉文件
		filter_doc=[i for i in lines if keep in i]#過(guò)濾文件內(nèi)容
		return filter_doc 
	return the_filter

filter1=make_filter("8")#這一行調(diào)用了make_filter函數(shù),且把8做為參數(shù)傳給了keep,接受了the_filter函數(shù)作為返回值
#這里的filter1等于函數(shù)the_filter
filter_result=filter1("data.csv")#把文件名data.csv作為參數(shù)傳給了函數(shù)the_filter
print(filter_result)
#結(jié)果
['6,7,8,9,10']

七、裝飾器、語(yǔ)法糖、注解

# 這是獲取函數(shù)開(kāi)始運(yùn)行時(shí)間的函數(shù)
import time 
def runtime(func): 
	def get_time(): 
		print(time.time())
		func()# run被調(diào)用	
	return get_time
@runtime
def run()
	print('student run')

#運(yùn)行
run()

#結(jié)果
當(dāng)前時(shí)間
student run	

由于有裝飾器@runtime的存在,會(huì)把run這個(gè)函數(shù)作為參數(shù)丟到runtime(func)里面去,如果調(diào)整打印時(shí)間代碼的位置會(huì)有不同結(jié)果:

# 這是獲取函數(shù)結(jié)束運(yùn)行時(shí)間的函數(shù)
import time 
def runtime(func): 
	def get_time(): 
		func()# run被調(diào)用	
		print(time.time())		
	return get_time
@runtime
def run()
	print('student run')

#運(yùn)行
run()

#結(jié)果
student run	
當(dāng)前時(shí)間

這里還要注意,這里還用到了閉包的概念,在運(yùn)行run函數(shù)的時(shí)候,調(diào)用的實(shí)際上是get_time函數(shù)。

對(duì)于多個(gè)參數(shù)的函數(shù)如何調(diào)用,看下面例子

#有一個(gè)參數(shù)
import time 
def runtime(func): 
	def get_time(i): 
		func(i)# run被調(diào)用	
		print(time.time())		
	return get_time
@runtime
def run(i)
	print('student run')
#運(yùn)行
run(1)
#有兩個(gè)參數(shù)
import time 
def runtime(func): 
	def get_time(i,j): 
		func(i,j)# run被調(diào)用	
		print(time.time())		
	return get_time
@runtime
def run(i,j)
	print('student run')
#運(yùn)行
run(1,2)

可以發(fā)現(xiàn),這樣寫(xiě)對(duì)于函數(shù)的多態(tài)不是很好,因此可以寫(xiě)為:

#自動(dòng)適配參數(shù)
import time 
def runtime(func): 
	def get_time(*arg): 
		func(*arg)# run被調(diào)用	
		print(time.time())		
	return get_time
@runtime
def run(i)
	print('student1 run')

@runtime
def run(i,j)
	print('student2 run')
#運(yùn)行
run(1)
run(1,2)

再次進(jìn)行擴(kuò)展,更為普適的寫(xiě)法,可以解決傳入類(lèi)似i=4的關(guān)鍵字參數(shù)寫(xiě)法:

#自動(dòng)適配參數(shù)
import time 
def runtime(func): 
	def get_time(*arg,**kwarg): 
		func(*arg,**kwarg)# run被調(diào)用	
		print(time.time())		
	return get_time
@runtime
def run(i)
	print('student1 run')

@runtime
def run(*arg,**kwarg)
	print('student2 run')

@runtime
def run()
	print('no param run')
#運(yùn)行
run(1)
run(1,2,j=4)
run()

到此這篇關(guān)于Python進(jìn)階之高級(jí)用法詳細(xì)總結(jié)的文章就介紹到這了,更多相關(guān)Python高級(jí)用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 淺談對(duì)Python變量的一些認(rèn)識(shí)理解
  • 教你利用Python破解ZIP或RAR文件密碼
  • Python協(xié)程asyncio模塊的演變及高級(jí)用法
  • python基于socketserver實(shí)現(xiàn)并發(fā),驗(yàn)證客戶端的合法性
  • python3 如何使用 goto 跳轉(zhuǎn)執(zhí)行到指定代碼行
  • 如何用python抓取B站數(shù)據(jù)
  • python print()函數(shù)的end參數(shù)和sep參數(shù)的用法說(shuō)明
  • python實(shí)現(xiàn)某考試系統(tǒng)生成word試卷
  • 解讀python基于netconf協(xié)議獲取網(wǎng)元的數(shù)據(jù)

標(biāo)簽:黔西 鷹潭 四川 常德 黑龍江 惠州 益陽(yáng) 上海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python進(jìn)階之高級(jí)用法詳細(xì)總結(jié)》,本文關(guān)鍵詞  Python,進(jìn)階,之,高級(jí),用法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python進(jìn)階之高級(jí)用法詳細(xì)總結(jié)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Python進(jìn)階之高級(jí)用法詳細(xì)總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    深水埗区| 师宗县| 通辽市| 宣恩县| 育儿| 莆田市| 渭南市| 安多县| 绥芬河市| 尉犁县| 塔城市| 郧西县| 凉城县| 临江市| 定西市| 深泽县| 即墨市| 全南县| 班戈县| 恩施市| 康马县| 来宾市| 综艺| 长丰县| 宣威市| 凌源市| 酉阳| 美姑县| 上高县| 钟祥市| 改则县| 宁远县| 兴隆县| 探索| 恩施市| 财经| 邹城市| 浦城县| 铜川市| 夏津县| 信丰县|