91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

常見(jiàn)的Pythonic寫(xiě)法匯總

馬哥Linux運(yùn)維 ? 來(lái)源:未知 ? 作者:胡薇 ? 2018-10-19 15:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Python最大的優(yōu)點(diǎn)之一就是語(yǔ)法簡(jiǎn)潔,好的代碼就像偽代碼一樣,干凈、整潔、一目了然。要寫(xiě)出 Pythonic(優(yōu)雅的、地道的、整潔的)代碼,需要多看多學(xué)大牛們寫(xiě)的代碼,github 上有很多非常優(yōu)秀的源代碼值得閱讀,比如:requests、flask、tornado,下面列舉一些常見(jiàn)的Pythonic寫(xiě)法。

0. 程序必須先讓人讀懂,然后才能讓計(jì)算機(jī)執(zhí)行。

“Programs must be written for people to read, and only incidentally for machines to execute.”

1. 交換賦值

##不推薦temp=aa=bb=a##推薦a,b=b,a#先生成一個(gè)元組(tuple)對(duì)象,然后unpack

2. Unpacking

##不推薦l=['David','Pythonista','+1-514-555-1234']first_name=l[0]last_name=l[1]phone_number=l[2]##推薦l=['David','Pythonista','+1-514-555-1234']first_name,last_name,phone_number=l#Python3Onlyfirst,*middle,last=another_list

3. 使用操作符in

##不推薦iffruit=="apple"orfruit=="orange"orfruit=="berry":#多次判斷##推薦iffruitin["apple","orange","berry"]:#使用in更加簡(jiǎn)潔

4. 字符串操作

##不推薦colors=['red','blue','green','yellow']result=''forsincolors:result+=s#每次賦值都丟棄以前的字符串對(duì)象,生成一個(gè)新對(duì)象##推薦colors=['red','blue','green','yellow']result=''.join(colors)#沒(méi)有額外的內(nèi)存分配

5. 字典鍵值列表

##不推薦forkeyinmy_dict.keys():#my_dict[key]...##推薦forkeyinmy_dict:#my_dict[key]...#只有當(dāng)循環(huán)中需要更改key值的情況下,我們需要使用my_dict.keys()#生成靜態(tài)的鍵值列表。

6. 字典鍵值判斷

##不推薦ifmy_dict.has_key(key):#...dosomethingwithd[key]##推薦ifkeyinmy_dict:#...dosomethingwithd[key]

7. 字典 get 和 setdefault 方法

##不推薦navs={}for(portfolio,equity,position)indata:ifportfolionotinnavs:navs[portfolio]=0navs[portfolio]+=position*prices[equity]##推薦navs={}for(portfolio,equity,position)indata:#使用get方法navs[portfolio]=navs.get(portfolio,0)+position*prices[equity]#或者使用setdefault方法navs.setdefault(portfolio,0)navs[portfolio]+=position*prices[equity]

8. 判斷真?zhèn)?/p>

##不推薦ifx==True:#....iflen(items)!=0:#...ifitems!=[]:#...##推薦ifx:#....ifitems:#...

9. 遍歷列表以及索引

##不推薦items='zeroonetwothree'.split()#method1i=0foriteminitems:printi,itemi+=1#method2foriinrange(len(items)):printi,items[i]##推薦items='zeroonetwothree'.split()fori,iteminenumerate(items):printi,item

10. 列表推導(dǎo)

##不推薦new_list=[]foritemina_list:ifcondition(item):new_list.append(fn(item))##推薦new_list=[fn(item)foritemina_listifcondition(item)]

11. 列表推導(dǎo)-嵌套

##不推薦forsub_listinnested_list:iflist_condition(sub_list):foriteminsub_list:ifitem_condition(item):#dosomething...##推薦gen=(itemforslinnested_listiflist_condition(sl)\foriteminslifitem_condition(item))foritemingen:#dosomething...

12. 循環(huán)嵌套

##不推薦forxinx_list:foryiny_list:forzinz_list:#dosomethingforx&y##推薦fromitertoolsimportproductforx,y,zinproduct(x_list,y_list,z_list):#dosomethingforx,y,z

13. 盡量使用生成器代替列表

##不推薦defmy_range(n):i=0result=[]whilei

14. 中間結(jié)果盡量使用imap/ifilter代替map/filter

##不推薦reduce(rf,filter(ff,map(mf,a_list)))##推薦fromitertoolsimportifilter,imapreduce(rf,ifilter(ff,imap(mf,a_list)))*lazyevaluation會(huì)帶來(lái)更高的內(nèi)存使用效率,特別是當(dāng)處理大數(shù)據(jù)操作的時(shí)候。

15. 使用any/all函數(shù)

##不推薦found=Falseforitemina_list:ifcondition(item):found=Truebreakiffound:#dosomethingiffound...##推薦ifany(condition(item)foritemina_list):#dosomethingiffound...

16. 屬性(property)

=

##不推薦classClock(object):def__init__(self):self.__hour=1defsetHour(self,hour):if25>hour>0:self.__hour=hourelse:raiseBadHourExceptiondefgetHour(self):returnself.__hour##推薦classClock(object):def__init__(self):self.__hour=1def__setHour(self,hour):if25>hour>0:self.__hour=hourelse:raiseBadHourExceptiondef__getHour(self):returnself.__hourhour=property(__getHour,__setHour)

17. 使用 with 處理文件打開(kāi)

##不推薦f=open("some_file.txt")try:data=f.read()#其他文件操作..finally:f.close()##推薦withopen("some_file.txt")asf:data=f.read()#其他文件操作...

18. 使用 with 忽視異常(僅限Python 3)

##不推薦try:os.remove("somefile.txt")exceptOSError:pass##推薦fromcontextlibimportignored#Python3onlywithignored(OSError):os.remove("somefile.txt")

19. 使用 with 處理加鎖

##不推薦importthreadinglock=threading.Lock()lock.acquire()try:#互斥操作...finally:lock.release()##推薦importthreadinglock=threading.Lock()withlock:#互斥操作...

20. 參考

1) Idiomatic Python:http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html

2) PEP 8: Style Guide for Python Code:http://www.python.org/dev/peps/pep-0008/

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    90

    文章

    3716

    瀏覽量

    97201
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4877

    瀏覽量

    90071

原文標(biāo)題:符合語(yǔ)言習(xí)慣的 Python 優(yōu)雅編程技巧

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    三防漆的常見(jiàn)問(wèn)題匯總

    應(yīng)力保護(hù)。然而,在實(shí)際應(yīng)用過(guò)程中,工程師和技術(shù)人員常常會(huì)遇到各種與三防漆自身性能或施工工藝相關(guān)的問(wèn)題。本文以問(wèn)答形式匯總了10個(gè)常見(jiàn)問(wèn)題,并結(jié)合行業(yè)標(biāo)準(zhǔn)、材料特性
    的頭像 發(fā)表于 02-07 16:43 ?224次閱讀
    三防漆的<b class='flag-5'>常見(jiàn)</b>問(wèn)題<b class='flag-5'>匯總</b>

    匯總開(kāi)關(guān)電源調(diào)試的常見(jiàn)問(wèn)題

    開(kāi)關(guān)電源作為現(xiàn)代電子設(shè)備的核心部件,其穩(wěn)定性和可靠性直接影響整體系統(tǒng)的性能。然而,在調(diào)試過(guò)程中,工程師常會(huì)遇到各種問(wèn)題,導(dǎo)致電源無(wú)法正常工作或性能不達(dá)標(biāo)。本文將系統(tǒng)梳理開(kāi)關(guān)電源調(diào)試中的常見(jiàn)問(wèn)題及其
    的頭像 發(fā)表于 02-06 12:05 ?407次閱讀
    <b class='flag-5'>匯總</b>開(kāi)關(guān)電源調(diào)試的<b class='flag-5'>常見(jiàn)</b>問(wèn)題

    UV膠的常見(jiàn)問(wèn)題匯總

    Q1:UV膠是什么,它是如何固化的UV膠,即紫外光固化膠,是一種在紫外線照射下發(fā)生光化學(xué)反應(yīng)而固化的膠粘劑。其內(nèi)部含有光引發(fā)劑,當(dāng)受到特定波長(zhǎng)的紫外光(通常為365nm或395nm)照射時(shí),光引發(fā)劑吸收光能并分解產(chǎn)生活性自由基或陽(yáng)離子,進(jìn)而引發(fā)樹(shù)脂單體交聯(lián)聚合,形成三維網(wǎng)絡(luò)結(jié)構(gòu),實(shí)現(xiàn)從液態(tài)到固態(tài)的轉(zhuǎn)變。Q2:UV膠需要多久才能完全固化固化時(shí)間取決于UV膠的類(lèi)
    的頭像 發(fā)表于 02-02 15:35 ?329次閱讀
    UV膠的<b class='flag-5'>常見(jiàn)</b>問(wèn)題<b class='flag-5'>匯總</b>

    導(dǎo)熱凝膠的常見(jiàn)問(wèn)題匯總

    Q1:導(dǎo)熱凝膠是什么?A1:導(dǎo)熱凝膠是一種以有機(jī)硅或改性硅樹(shù)脂為基體,填充高導(dǎo)熱無(wú)機(jī)填料(如氧化鋁、氮化硼等)制成的熱界面材料。其初始為膏狀或半流體,可點(diǎn)膠施工,固化后形成柔軟彈性體,用于填充發(fā)熱器件與散熱結(jié)構(gòu)之間的微小間隙,提升熱傳導(dǎo)效率。Q2:導(dǎo)熱凝膠和導(dǎo)熱硅脂有什么區(qū)別?A2:主要區(qū)別在于物理形態(tài)和長(zhǎng)期穩(wěn)定性。導(dǎo)熱硅脂為非固化材料,長(zhǎng)期使用可能干裂、滲
    的頭像 發(fā)表于 01-30 16:25 ?172次閱讀
    導(dǎo)熱凝膠的<b class='flag-5'>常見(jiàn)</b>問(wèn)題<b class='flag-5'>匯總</b>

    常見(jiàn)的電子元器件失效分析匯總

    電子元器件失效可能導(dǎo)致電路功能異常,甚至整機(jī)損毀,耗費(fèi)大量調(diào)試時(shí)間。部分半導(dǎo)體器件存在外表完好但性能劣化的“軟失效”,進(jìn)一步增加了問(wèn)題定位的難度。電阻器失效1.開(kāi)路失效:最常見(jiàn)故障。由過(guò)電流沖擊導(dǎo)致
    的頭像 發(fā)表于 10-17 17:38 ?1148次閱讀
    <b class='flag-5'>常見(jiàn)</b>的電子元器件失效分析<b class='flag-5'>匯總</b>

    2025北京軟件開(kāi)發(fā)公司推薦匯總:盤(pán)點(diǎn)10家優(yōu)秀軟件定制開(kāi)發(fā)公司

    2025北京軟件開(kāi)發(fā)公司推薦匯總:盤(pán)點(diǎn)10家優(yōu)秀軟件定制開(kāi)發(fā)公司
    的頭像 發(fā)表于 09-30 09:16 ?2762次閱讀
    2025北京軟件開(kāi)發(fā)公司推薦<b class='flag-5'>匯總</b>:盤(pán)點(diǎn)10家優(yōu)秀軟件定制開(kāi)發(fā)公司

    常見(jiàn)的物聯(lián)網(wǎng)連接方式有哪些?

    常見(jiàn)的物聯(lián)網(wǎng)連接方式
    發(fā)表于 09-08 08:26

    干貨分享 | 功能安全常見(jiàn)疑難問(wèn)題匯總

    安全干貨SafetyQ&A“功能安全常見(jiàn)疑難問(wèn)題解答”在智能駕駛及新能源汽車(chē)的飛速發(fā)展之下,功能安全已成為繞不開(kāi)的關(guān)鍵領(lǐng)域。然而在實(shí)際應(yīng)用中,一直面臨著諸多問(wèn)題和挑戰(zhàn)。前不久,磐時(shí)舉辦了一場(chǎng)
    的頭像 發(fā)表于 09-05 16:21 ?2314次閱讀
    干貨分享 | 功能安全<b class='flag-5'>常見(jiàn)</b>疑難問(wèn)題<b class='flag-5'>匯總</b>

    工業(yè)物聯(lián)網(wǎng)常見(jiàn)的協(xié)議有哪些

    工業(yè)物聯(lián)網(wǎng)常見(jiàn)的協(xié)議有哪些
    的頭像 發(fā)表于 06-14 15:52 ?1265次閱讀

    便攜式經(jīng)濟(jì)型萬(wàn)用表常見(jiàn)疑問(wèn)匯總

    上,與 SYN5684 系列相近,能夠?yàn)橛脩?hù)提供精準(zhǔn)的測(cè)量結(jié)果。而且,其智能算法還能對(duì)測(cè)量數(shù)據(jù)進(jìn)行實(shí)時(shí)校準(zhǔn)和優(yōu)化,進(jìn)一步提升測(cè)量的可靠性。? (二)測(cè)量功能豐富嗎?? 這兩款萬(wàn)用表的測(cè)量功能十分豐富。除了常見(jiàn)
    發(fā)表于 06-12 16:37

    半導(dǎo)體人必懂的50個(gè)‘黑話(huà)’:從光刻到封裝,一文解鎖行業(yè)暗號(hào)!

    以下是半導(dǎo)體工藝行業(yè)中常見(jiàn)的“黑話(huà)”(行業(yè)術(shù)語(yǔ))匯總,涵蓋晶圓制造、封裝測(cè)試、設(shè)備材料等環(huán)節(jié),幫助快速理解行業(yè)交流中的專(zhuān)業(yè)術(shù)語(yǔ):
    的頭像 發(fā)表于 06-03 11:26 ?1w次閱讀
    半導(dǎo)體人必懂的50個(gè)‘黑話(huà)’:從光刻到封裝,一文解鎖行業(yè)暗號(hào)!

    電機(jī)選型計(jì)算公式與知識(shí)點(diǎn)匯總

    純分享帖,需要者可點(diǎn)擊附件獲取完整資料~~~*附件:電機(jī)選型計(jì)算公式與知識(shí)點(diǎn)匯總.pdf 【免責(zé)聲明】?jī)?nèi)容轉(zhuǎn)自今日電機(jī),因轉(zhuǎn)載眾多,無(wú)法確認(rèn)真正原始作者,故僅標(biāo)明轉(zhuǎn)載來(lái)源。版權(quán)歸原出處所有,純分享帖,侵權(quán)請(qǐng)聯(lián)系刪除內(nèi)容以保證您的權(quán)益。
    發(fā)表于 04-29 16:10

    工程師手冊(cè):常用電子物料封裝及參數(shù)介紹

    匯總了工程師常見(jiàn)的電子物料的封裝及參數(shù)介紹,雖然是老資料,不過(guò)手冊(cè)查看方便 純分享貼,有需要可以直接下載附件獲取資料! (如果內(nèi)容有幫助可以關(guān)注、點(diǎn)贊、評(píng)論支持一下哦~)
    發(fā)表于 03-28 16:48

    基于FPGA的DS18B20數(shù)字溫度傳感器測(cè)溫實(shí)例

    本文將使用三段式狀態(tài)機(jī)(Moore型)的寫(xiě)法來(lái)對(duì)DS18B20進(jìn)行測(cè)溫操作,以便了解DS18B20和熟悉三段式狀態(tài)機(jī)的寫(xiě)法
    的頭像 發(fā)表于 03-17 11:06 ?2469次閱讀
    基于FPGA的DS18B20數(shù)字溫度傳感器測(cè)溫實(shí)例

    單片機(jī)接口類(lèi)資料大匯總—50冊(cè)大全

    本份資料為單片機(jī)接口類(lèi)資料大匯總 總共有50冊(cè),內(nèi)容包括TCP/IP接口,模擬串口,CAN接口、I2C,MODBUS,PCI,USB,RS232等等 獲取完整文檔資料可下載附件哦?。。。∪绻麅?nèi)容有幫助可以關(guān)注、點(diǎn)贊、評(píng)論支持一下哦~
    發(fā)表于 03-14 11:08