在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

常見的Pythonic寫法匯總

馬哥Linux運(yùn)維 ? 來源:未知 ? 作者:胡薇 ? 2018-10-19 15:03 ? 次閱讀

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

0. 程序必須先讓人讀懂,然后才能讓計算機(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#先生成一個元組(tuple)對象,然后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更加簡潔

4. 字符串操作

##不推薦colors=['red','blue','green','yellow']result=''forsincolors:result+=s#每次賦值都丟棄以前的字符串對象,生成一個新對象##推薦colors=['red','blue','green','yellow']result=''.join(colors)#沒有額外的內(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會帶來更高的內(nèi)存使用效率,特別是當(dāng)處理大數(shù)據(jù)操作的時候。

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 處理文件打開

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

    關(guān)注

    88

    文章

    3637

    瀏覽量

    93929
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4807

    瀏覽量

    84987

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    最新!智慧燈桿八大應(yīng)用場景案例獨(dú)家匯總

    最新!智慧燈桿八大應(yīng)用場景案例獨(dú)家匯總
    的頭像 發(fā)表于 01-14 12:47 ?96次閱讀
    最新!智慧燈桿八大應(yīng)用場景案例獨(dú)家<b class='flag-5'>匯總</b>

    最新!智慧燈桿在水域中的應(yīng)用案例匯總(建議收藏)

    最新!智慧燈桿在水域中的應(yīng)用案例匯總(建議收藏)
    的頭像 發(fā)表于 01-07 10:28 ?81次閱讀
    最新!智慧燈桿在水域中的應(yīng)用案例<b class='flag-5'>匯總</b>(建議收藏)

    常見的容器云服務(wù)引擎有哪些?

    常見的容器云服務(wù)引擎有哪些?云服務(wù)引擎涵蓋數(shù)據(jù)庫、數(shù)據(jù)存儲、數(shù)據(jù)處理、數(shù)據(jù)分析、容器云、機(jī)器學(xué)習(xí)及數(shù)據(jù)集成等多個領(lǐng)域,提供一站式解決方案。云服務(wù)引擎是云計算領(lǐng)域的重要組成部分,它們提供了各種服務(wù)來幫助用戶構(gòu)建、部署和管理應(yīng)用程序。以下是UU云小編匯總的一些
    的頭像 發(fā)表于 01-07 09:49 ?77次閱讀

    研華工控機(jī)底板常見型號匯總

    在工業(yè)控制領(lǐng)域,研華作為知名品牌,其工控機(jī)底板種類繁多,每一款都具備獨(dú)特的特性與優(yōu)勢,以滿足不同工業(yè)場景的多樣化需求。以下是對研華工控機(jī)底板部分常見型號的詳細(xì)匯總及性能參數(shù)介紹:
    的頭像 發(fā)表于 12-14 10:14 ?238次閱讀
    研華工控機(jī)底板<b class='flag-5'>常見</b>型號<b class='flag-5'>匯總</b>

    案例賞析 近期23個智慧路燈燈桿落地案例匯總!

    『案例賞析』近期23個智慧路燈燈桿落地案例匯總!
    的頭像 發(fā)表于 11-13 11:10 ?302次閱讀
    案例賞析 近期23個智慧路燈燈桿落地案例<b class='flag-5'>匯總</b>!

    C語言中最常見的宏定義寫法

    如果讓你用C語言寫個宏定義,我相信大部分同學(xué)順手就能寫出define。
    的頭像 發(fā)表于 10-28 11:12 ?359次閱讀

    TMS320C6452功耗匯總

    電子發(fā)燒友網(wǎng)站提供《TMS320C6452功耗匯總.pdf》資料免費(fèi)下載
    發(fā)表于 10-15 11:44 ?0次下載
    TMS320C6452功耗<b class='flag-5'>匯總</b>

    OMAP-L137功耗匯總

    電子發(fā)燒友網(wǎng)站提供《OMAP-L137功耗匯總.pdf》資料免費(fèi)下載
    發(fā)表于 10-12 09:28 ?0次下載
    OMAP-L137功耗<b class='flag-5'>匯總</b>

    常見的服務(wù)器容器和漏洞類型匯總

    常見的服務(wù)器容器包括KubeSphere、Tomcat、Nginx、Apache等,它們在提供便捷的服務(wù)部署和靈活的網(wǎng)絡(luò)功能的同時,也可能存在著一定的安全風(fēng)險。這些容器的漏洞可能導(dǎo)致數(shù)據(jù)泄露、權(quán)限被非授權(quán)訪問甚至系統(tǒng)被完全控制。具體的常見服務(wù)器容器漏洞包括解析漏洞、SSR
    的頭像 發(fā)表于 08-29 10:39 ?278次閱讀

    逆變器常見問題匯總#逆變電源

    逆變器
    深圳市寶威特電源有限公司
    發(fā)布于 :2024年06月26日 09:30:41

    SMT貼片常見不良現(xiàn)象分析匯總

    在我們加工制造產(chǎn)品的過程中,電路板貼片總會遇到一些問題,我們咨詢了深圳佳金源工業(yè)科技有限公司的技術(shù)人員,對問題進(jìn)行了整理匯總,便于大家學(xué)習(xí)了解。在SMT貼片生產(chǎn)過程中時有發(fā)生焊接不良現(xiàn)象,常見
    的頭像 發(fā)表于 06-06 16:41 ?933次閱讀
    SMT貼片<b class='flag-5'>常見</b>不良現(xiàn)象分析<b class='flag-5'>匯總</b>

    請問handle的寫法

    遇到一行代碼 YDLidar *laser = lidarCreate(); //Create a handle to this Lidar. 請問這行代碼是什么意思,句柄的寫法怎么是這樣的呀
    發(fā)表于 05-18 10:42

    在官方庫中發(fā)現(xiàn)GPIOx-&gt;ODR這種寫法,是什么意思,怎么中間會有-&gt;?

    本人新手,剛接觸st的芯片 在官方庫中發(fā)現(xiàn)GPIOx->ODR這種寫法,不知道這是什么意思,怎么中間會有->? 請論壇上高手予以幫忙解答
    發(fā)表于 05-10 06:48

    國產(chǎn)riscv芯片大匯總

    請問有統(tǒng)計國產(chǎn)的riscv芯片的嗎?能匯總一下嗎?
    發(fā)表于 04-27 11:53

    Cadence17.4使用問題匯總

    電子發(fā)燒友網(wǎng)站提供《Cadence17.4使用問題匯總.docx》資料免費(fèi)下載
    發(fā)表于 03-07 16:33 ?2次下載
    主站蜘蛛池模板: brazzersvideosexhd欧美高清 | 中文字字幕码一二区 | 韩国xxxxxxxx69 | 婷婷爱五月 | 国产yw.8825.c免费 | 欧美成人伊人久久综合网 | 夜夜操天天| 女人aaaaa片一级一毛片 | 亚洲狼色专区 | 性欧美性free | 欧美猛操 | 久久精品30| 精品久久久久久午夜 | 香蕉视频在线观看黄 | 91国内在线国内在线播放 | 欧美aaaaa性bbbbb小妇 | 人人看人人鲁狠狠高清 | 亚洲大成色www永久网 | 天天操天天射天天 | 任你操免费视频 | 无人码一区二区三区视频 | 久久精品30 | 一本高清在线 | 一级aaaaa毛片免费视频 | 国产成人一区二区在线不卡 | 四虎现在的网址入口 | 欧美一级黄色片视频 | 国产一线在线观看 | 午夜免费观看_视频在线观看 | 99热在线获取最新地址 | 一二三区视频 | 国产普通话一二三道 | 四虎影视永久在线观看 | 久青草视频在线 | 开心综合网 | 天天色色网 | 天天干天天操天天插 | 黄色三级在线看 | 欧美午夜寂寞影院安卓列表 | 偷偷狠狠的日日2020 | 黄 色 大 片 网站 |