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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

常見的Pythonic寫法匯總

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

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

0. 程序必須先讓人讀懂,然后才能讓計算機執行。

“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)#沒有額外的內存分配

5. 字典鍵值列表

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

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. 判斷真偽

##不推薦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. 列表推導

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

11. 列表推導-嵌套

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

12. 循環嵌套

##不推薦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. 中間結果盡量使用imap/ifilter代替map/filter

##不推薦reduce(rf,filter(ff,map(mf,a_list)))##推薦fromitertoolsimportifilter,imapreduce(rf,ifilter(ff,imap(mf,a_list)))*lazyevaluation會帶來更高的內存使用效率,特別是當處理大數據操作的時候。

15. 使用any/all函數

##不推薦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/

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3686

    瀏覽量

    94962
  • python
    +關注

    關注

    56

    文章

    4825

    瀏覽量

    86370

原文標題:符合語言習慣的 Python 優雅編程技巧

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    最新!智慧燈桿七大應用場景案例獨家匯總

    最新!智慧燈桿七大應用場景案例獨家匯總
    的頭像 發表于 03-07 10:10 ?403次閱讀

    最新!智慧燈桿八大應用場景案例獨家匯總

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

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

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

    常見的容器云服務引擎有哪些?

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

    研華工控機底板常見型號匯總

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

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

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

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

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

    TMS320C6455/C6454功耗匯總

    電子發燒友網站提供《TMS320C6455/C6454功耗匯總.pdf》資料免費下載
    發表于 10-16 11:21 ?0次下載
    TMS320C6455/C6454功耗<b class='flag-5'>匯總</b>

    TMS320C6410/13功耗匯總

    電子發燒友網站提供《TMS320C6410/13功耗匯總.pdf》資料免費下載
    發表于 10-16 10:07 ?0次下載
    TMS320C6410/13功耗<b class='flag-5'>匯總</b>

    TMS320C6452功耗匯總

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

    OMAP-L137功耗匯總

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

    TMS320C6747/45/43功耗匯總

    電子發燒友網站提供《TMS320C6747/45/43功耗匯總.pdf》資料免費下載
    發表于 10-12 09:20 ?2次下載
    TMS320C6747/45/43功耗<b class='flag-5'>匯總</b>

    常見的服務器容器和漏洞類型匯總

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

    服務器錯誤是怎么回事?常見錯誤原因及解決方法匯總

    服務器錯誤是怎么回事?最常見的原因分有六個,分別是:硬件問題、軟件問題、網絡問題、資源耗盡、數據庫、文件權限問題。可以根據以下具體錯誤原因進行辨別,并選擇適合的解決方法。關于常見服務器原因及解決方法如下:
    的頭像 發表于 08-12 10:11 ?2150次閱讀

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

    逆變器
    深圳市寶威特電源有限公司
    發布于 :2024年06月26日 09:30:41
    主站蜘蛛池模板: 国产美女精品一区二区三区 | 天天摸天天操免费播放小视频 | 精品伊人久久大线蕉色首页 | 国产一级特黄一级毛片 | 国产真实灌醉美女疯狂弄 | 亚洲黄色三级网站 | 视频在线观看一区 | 伦理片日本韩国电影三级在线观看 | 国产精品资源手机在线播放 | 在线激情网| 黄色大毛片 | 亚洲综合色就色手机在线观看 | 日韩成人免费一级毛片 | 成人羞羞视频国产 | a久久久久一级毛片护士免费 | 九九九国产在线 | 九九久久久久午夜精选 | 一级特黄特黄的大片免费 | 永久网站色视频在线观看免费 | a在线免费| 四虎最新网址在线观看 | 天堂最新资源在线 | 日本视频不卡 | fenfencao在线观看免费视频 | 1024手机看片日韩 | 午夜在线免费观看 | 午夜一级影院 | 国产精品美女视频 | 日本三级三级三级免费看 | 国产精品黄网站免费观看 | 成人中文字幕一区二区三区 | 日本黄色短视频 | 亚洲va中文va欧美va爽爽 | 久久久久久久久综合影视网 | 你懂的网址在线 | 五月伊人婷婷 | 五月婷婷狠狠 | 伊人久久成人 | 狠狠色丁香婷婷久久综合不卡 | 黄 色 片免费观看 | 黄色一级片在线观看 |