国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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/

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

    關注

    90

    文章

    3716

    瀏覽量

    97185
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

    90025

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    三防漆的常見問題匯總

    應力保護。然而,在實際應用過程中,工程師和技術人員常常會遇到各種與三防漆自身性能或施工工藝相關的問題。本文以問答形式匯總了10個常見問題,并結合行業標準、材料特性
    的頭像 發表于 02-07 16:43 ?197次閱讀
    三防漆的<b class='flag-5'>常見</b>問題<b class='flag-5'>匯總</b>

    匯總開關電源調試的常見問題

    開關電源作為現代電子設備的核心部件,其穩定性和可靠性直接影響整體系統的性能。然而,在調試過程中,工程師常會遇到各種問題,導致電源無法正常工作或性能不達標。本文將系統梳理開關電源調試中的常見問題及其
    的頭像 發表于 02-06 12:05 ?387次閱讀
    <b class='flag-5'>匯總</b>開關電源調試的<b class='flag-5'>常見</b>問題

    UV膠的常見問題匯總

    Q1:UV膠是什么,它是如何固化的UV膠,即紫外光固化膠,是一種在紫外線照射下發生光化學反應而固化的膠粘劑。其內部含有光引發劑,當受到特定波長的紫外光(通常為365nm或395nm)照射時,光引發劑吸收光能并分解產生活性自由基或陽離子,進而引發樹脂單體交聯聚合,形成三維網絡結構,實現從液態到固態的轉變。Q2:UV膠需要多久才能完全固化固化時間取決于UV膠的類
    的頭像 發表于 02-02 15:35 ?263次閱讀
    UV膠的<b class='flag-5'>常見</b>問題<b class='flag-5'>匯總</b>

    導熱凝膠的常見問題匯總

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

    常見的電子元器件失效分析匯總

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

    2025北京軟件開發公司推薦匯總:盤點10家優秀軟件定制開發公司

    2025北京軟件開發公司推薦匯總:盤點10家優秀軟件定制開發公司
    的頭像 發表于 09-30 09:16 ?2744次閱讀
    2025北京軟件開發公司推薦<b class='flag-5'>匯總</b>:盤點10家優秀軟件定制開發公司

    常見的物聯網連接方式有哪些?

    常見的物聯網連接方式
    發表于 09-08 08:26

    干貨分享 | 功能安全常見疑難問題匯總

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

    便攜式經濟型萬用表常見疑問匯總

    上,與 SYN5684 系列相近,能夠為用戶提供精準的測量結果。而且,其智能算法還能對測量數據進行實時校準和優化,進一步提升測量的可靠性。? (二)測量功能豐富嗎?? 這兩款萬用表的測量功能十分豐富。除了常見
    發表于 06-12 16:37

    半導體人必懂的50個‘黑話’:從光刻到封裝,一文解鎖行業暗號!

    以下是半導體工藝行業中常見的“黑話”(行業術語)匯總,涵蓋晶圓制造、封裝測試、設備材料等環節,幫助快速理解行業交流中的專業術語:
    的頭像 發表于 06-03 11:26 ?9947次閱讀
    半導體人必懂的50個‘黑話’:從光刻到封裝,一文解鎖行業暗號!

    電機選型計算公式與知識點匯總

    純分享帖,需要者可點擊附件獲取完整資料~~~*附件:電機選型計算公式與知識點匯總.pdf 【免責聲明】內容轉自今日電機,因轉載眾多,無法確認真正原始作者,故僅標明轉載來源。版權歸原出處所有,純分享帖,侵權請聯系刪除內容以保證您的權益。
    發表于 04-29 16:10

    工程師手冊:常用電子物料封裝及參數介紹

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

    基于FPGA的DS18B20數字溫度傳感器測溫實例

    本文將使用三段式狀態機(Moore型)的寫法來對DS18B20進行測溫操作,以便了解DS18B20和熟悉三段式狀態機的寫法
    的頭像 發表于 03-17 11:06 ?2457次閱讀
    基于FPGA的DS18B20數字溫度傳感器測溫實例

    單片機接口類資料大匯總—50冊大全

    本份資料為單片機接口類資料大匯總 總共有50冊,內容包括TCP/IP接口,模擬串口,CAN接口、I2C,MODBUS,PCI,USB,RS232等等 獲取完整文檔資料可下載附件哦!!!!如果內容有幫助可以關注、點贊、評論支持一下哦~
    發表于 03-14 11:08

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

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