日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
挑戰(zhàn)“不可能”的代碼:你不知道的Python功能

 本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)

創(chuàng)新互聯(lián)公司,為您提供網(wǎng)站建設(shè)公司、成都網(wǎng)站制作、網(wǎng)站營銷推廣、網(wǎng)站開發(fā)設(shè)計,對服務(wù)混凝土攪拌罐車等多個行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗。創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報價服務(wù),我們深知市場的競爭激烈,認(rèn)真對待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!

Python看似簡單,但實則變化萬千,筆者總都能看到一些代碼以近乎不可能的方式呈現(xiàn)。這些功能很精妙,以至于我無法想象沒有Python時該怎樣生活。

本文會涉及其中幾個不常用卻很有用的功能,包括:

  • 變量賦值——運(yùn)用*args和**kwargs(包括字典合并)
  • 不可變集合——是什么,為什么有用
  • 多因素條件——更清晰的邏輯
  • 檢查變量是否存在——在本地和全局范圍內(nèi)
  • 勝過lambda函數(shù)——編寫Python風(fēng)格和函數(shù)風(fēng)格的一行式代碼

變量賦值

正如函數(shù)*args和**kwargs,在變量賦值中可以運(yùn)用相同的語法:

合并兩個字典

合并字典時運(yùn)用可迭代變量賦值法中的**kwargs語法:

需要小心的是,如果字典間有公共鍵,后一個鍵值對(y中的)會替代前者。據(jù)即將發(fā)行的最新Python版本(3.9),可以用一個全新的語法來規(guī)避這個問題,即字典合并,并更新操作符:

z = x | y # 合并——如上所述的行為模式

x |= y # 更新——替代字典合并

不可變集合

在Python中,可以運(yùn)用集合,也就是不同對象的無序集合。這些集合是可變的,意味著能用add()和remove()進(jìn)行變換——這說明可變集合是不可哈希的。

反之,可以運(yùn)用不可變集合frozenset()——一種無法改變值的集合。但正因不可變,它是可哈希的——當(dāng)把set和frozenset同時作為字典的鍵時,這一點(diǎn)就體現(xiàn)出來了:

把frozenset作為字典的鍵似乎并不實用,但是frozenset的作用是提供更詳細(xì)、更具目的性的代碼。這提醒了未來的代碼閱讀者——如果改變我,一切都會崩潰。

多因素條件

清理那些雜亂的if語句,而不是:

 
 
 
 
  1. if 0 <= x and x <= 1: 
  2. print('value is %') 

可以寫成:

 
 
 
 
  1. if (0 <= x <= 1): 
  2. print('value is %') 

再深入一點(diǎn),可以添加更多的條件語句,并用逐位運(yùn)算符把它們串起來:

 
 
 
 
  1. if (0 <= x < 1) | (7 <= x < 8) | (x == 10): 
  2.     print('passed') 

檢查變量是否存在

我需要檢查變量是否存在嗎?

 
 
 
 
  1. if "var_name" in globals(): 
  2.     print("var_nameexists!")elif "var_name" in locals(): 
  3.     print("var_name existslocally!")else: 
  4.     print("var_name does notexist.") 

可以分別利用 globals()和 locals()在全局和本地范圍內(nèi)檢查變量。

檢查變量test1和test2是否在全局或本地

globals和locals這兩個作用域函數(shù)都會返回字典——因此也執(zhí)行上述的字典合并語法{**x, **y}。代碼在合并范圍后的字典中同時檢查了test1和test2。

勝過lambda函數(shù)

利用lambda函數(shù)編寫一行簡單快捷的程序是很常見的,但是它很少用來建立多參數(shù)函數(shù)。通常情況如下:

 
 
 
 
  1. do_something = lambda x: x**2 / (1 - x) 

但lambda函數(shù)也可用來構(gòu)建簡練的一行式函數(shù):

運(yùn)用lambda函數(shù)構(gòu)建一個帶有Cochran方

在到處運(yùn)用lambda函數(shù)之前,你要知道這是Python語法中最忌諱的用法之一。PEP 8——Python的代碼風(fēng)格指南——非常不鼓勵把lambda函數(shù)作為命名函數(shù)。同時,特別是對于數(shù)字公式,一行式函數(shù)看起來會很奇怪。

因此,可以編寫一行式的def 語句來替代lambda:

運(yùn)用單行的def語句構(gòu)建一個帶有Cochran

運(yùn)用哪一種方法取決于你。除非是想得到消極的反饋,那么請用lambda,否則還是用def吧。

這是五項非常有用的Python功能,如果你不知道的話,就趕快積累起來吧!


網(wǎng)頁題目:挑戰(zhàn)“不可能”的代碼:你不知道的Python功能
網(wǎng)站URL:http://www.5511xx.com/article/dpoiepp.html