精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

代碼這樣寫不止于優雅(Python 版)

開發
一份優雅、干凈、整潔的代碼通常自帶文檔和注釋屬性,讀代碼即是讀作者的思路。Python 開發中很少要像 Java 一樣把遵循某種設計模式作為開發原則來應用到系統中,畢竟設計模式只是一種實現手段而已,代碼清晰才是最終目的,而 Python 靈活而不失優雅,這也是為什么 Python 能夠深受 geek 喜愛的原因之一。

Martin(Bob大叔)曾在《代碼整潔之道》一書打趣地說:當你的代碼在做 Code Review 時,審查者要是憤怒地吼道:

“What the fuck is this shit?”

“Dude, What the fuck!”

等言辭激烈的詞語時,那說明你寫的代碼是 Bad Code,如果審查者只是漫不經心的吐出幾個

“What the fuck?”,

那說明你寫的是 Good Code。衡量代碼質量的唯一標準就是每分鐘罵出“WTF” 的頻率。 

 

 

 

一份優雅、干凈、整潔的代碼通常自帶文檔和注釋屬性,讀代碼即是讀作者的思路。Python 開發中很少要像 Java 一樣把遵循某種設計模式作為開發原則來應用到系統中,畢竟設計模式只是一種實現手段而已,代碼清晰才是最終目的,而 Python 靈活而不失優雅,這也是為什么 Python 能夠深受 geek 喜愛的原因之一。

上周寫了一篇:《代碼這樣寫更優雅》,朋友們紛紛表示希望再寫點兒,今天就接著這個話題寫點 Python 中那些 Pythonic 的寫法,希望可以拋磚引玉。

1、鏈式比較操作

  1. age = 18 
  2.  
  3. if age > 18 and age < 60: 
  4.  
  5.     print("young man" 

pythonic

  1. if 18 < age < 60: 
  2.  
  3. print("young man" 

理解了鏈式比較操作,那么你應該知道為什么下面這行代碼輸出的結果是 False。

  1. >>> False == False == True 
  2.  
  3. False  

2、if/else 三目運算

  1. if gender == 'male'
  2.  
  3.     text = '男' 
  4.  
  5. else
  6.  
  7.     text = '女'  

pythonic

  1. text = '男' if gender == 'male' else '女' 

在類C的語言中都支持三目運算 b?x:y,Python之禪有這樣一句話:

“There should be one– and preferably only one –obvious way to do it. ”。

能夠用 if/else 清晰表達邏輯時,就沒必要再額外新增一種方式來實現。

3、真值判斷

檢查某個對象是否為真值時,還顯示地與 True 和 False 做比較就顯得多此一舉,不專業

  1. if attr == True
  2.  
  3.     do_something() 
  4.  
  5.   
  6.  
  7. if len(values) != 0: # 判斷列表是否為空 
  8.  
  9.     do_something()  

pythonic

  1. if attr: 
  2.  
  3.     do_something() 
  4.  
  5.   
  6.  
  7. if values
  8.  
  9.     do_something()  

真假值對照表: 

 

 

 

4、for/else語句

for else 是 Python 中特有的語法格式,else 中的代碼在 for 循環遍歷完所有元素之后執行。

  1. flagfound = False 
  2.  
  3. for i in mylist: 
  4.  
  5.     if i == theflag: 
  6.  
  7.         flagfound = True 
  8.  
  9.         break 
  10.  
  11.     process(i) 
  12.  
  13.   
  14.  
  15. if not flagfound: 
  16.  
  17.     raise ValueError("List argument missing terminal flag." 

pythonic

  1. for i in mylist: 
  2.  
  3.     if i == theflag: 
  4.  
  5.         break 
  6.  
  7.     process(i) 
  8.  
  9. else
  10.  
  11.     raise ValueError("List argument missing terminal flag." 

5、字符串格式化

  1. s1 = "foofish.net" 
  2.  
  3. s2 = "vttalk" 
  4.  
  5. s3 = "welcome to %s and following %s" % (s1, s2)  

pythonic

  1. s3 = "welcome to {blog} and following {wechat}".format(blog="foofish.net", wechat="vttalk"

很難說用 format 比用 %s 的代碼量少,但是 format 更易于理解。

“Explicit is better than implicit — Zen of Python”

6、列表切片

獲取列表中的部分元素***想到的就是用 for 循環根據條件提取元素,這也是其它語言中慣用的手段,而在 Python 中還有強大的切片功能。

  1. items = range(10) 
  2.  
  3.   
  4.  
  5. # 奇數 
  6.  
  7. odd_items = [] 
  8.  
  9. for i in items: 
  10.  
  11.     if i % 2 != 0: 
  12.  
  13.         odd_items.append(i) 
  14.  
  15.   
  16.  
  17. # 拷貝 
  18.  
  19. copy_items = [] 
  20.  
  21. for i in items: 
  22.  
  23.     copy_items.append(i)  

pythonic

  1. # 第1到第4個元素的范圍區間 
  2.  
  3. sub_items = items[1:4] 
  4.  
  5. # 奇數 
  6.  
  7. odd_items = items[1::2] 
  8.  
  9. #拷貝 
  10.  
  11. copy_items = items[::] 或者 items[:]  

列表元素的下標不僅可以用正數表示,還是用負數表示,***一個元素的位置是 -1,從右往左,依次遞減。

  1. -------------------------- 
  2.  
  3. | P | y | t | h | o | n | 
  4.  
  5. -------------------------- 
  6.  
  7.    0   1   2   3   4   5 
  8.  
  9.   -6  -5  -4  -3  -2  -1 
  10.  
  11. --------------------------  

7、善用生成器

  1. def fib(n): 
  2.  
  3.     a, b = 0, 1 
  4.  
  5.     result = [] 
  6.  
  7.      while b < n: 
  8.  
  9.         result.append(b) 
  10.  
  11.         a, b = b, a+b 
  12.  
  13.     return result  

pythonic

  1. def fib(n): 
  2.  
  3.     a, b = 0, 1 
  4.  
  5.     while a < n: 
  6.  
  7.         yield a 
  8.  
  9.         a, b = b, a + b  

上面是用生成器生成費波那契數列。生成器的好處就是無需一次性把所有元素加載到內存,只有迭代獲取元素時才返回該元素,而列表是預先一次性把全部元素加載到了內存。此外用 yield 代碼看起來更清晰。

8、獲取字典元素

  1. d = {'name''foo'
  2.  
  3. if d.has_key('name'): 
  4.  
  5.     print(d['name']) 
  6.  
  7. else
  8.  
  9.     print('unknown' 

pythonic

  1. d.get("name""unknown"

9、預設字典默認值

通過 key 分組的時候,不得不每次檢查 key 是否已經存在于字典中。

  1. data = [('foo', 10), ('bar', 20), ('foo', 39), ('bar', 49)] 
  2.  
  3. groups = {} 
  4.  
  5. for (key, value) in data: 
  6.  
  7.     if key in groups: 
  8.  
  9.         groups[key].append(value) 
  10.  
  11.     else
  12.  
  13.         groups[key] = [value] 

pythonic

  1. # ***種方式 
  2.  
  3. groups = {} 
  4.  
  5. for (key, value) in data: 
  6.  
  7.     groups.setdefault(key, []).append(value) 
  8.  
  9.   
  10.  
  11. # 第二種方式 
  12.  
  13. from collections import defaultdict 
  14.  
  15. groups = defaultdict(list) 
  16.  
  17. for (key, value) in data: 
  18.  
  19.     groups[key].append(value)  

10、字典推導式

在python2.7之前,構建字典對象一般使用下面這種方式,可讀性非常差

  1. numbers = [1,2,3] 
  2.  
  3. my_dict = dict([(number,number*2) for number in numbers]) 
  4.  
  5. print(my_dict)  # {1: 2, 2: 4, 3: 6}  

pythonic

  1. numbers = [1, 2, 3] 
  2.  
  3. my_dict = {number: number * 2 for number in numbers} 
  4.  
  5. print(my_dict) # {1: 2, 2: 4, 3: 6} 
  6.  
  7. # 還可以指定過濾條件 
  8.  
  9. my_dict = {number: number * 2 for number in numbers if number > 1} 
  10.  
  11. print(my_dict) # {2: 4, 3: 6}  

字典推導式是python2.7新增的特性,可讀性增強了很多,類似的還是列表推導式和集合推導式。 

責任編輯:龐桂玉 來源: Python開發者
相關推薦

2017-07-07 16:57:35

代碼Python

2019-11-25 14:06:44

AI無人駕駛自動駕駛

2021-04-20 10:50:38

Spring Boot代碼Java

2017-05-03 09:49:14

OpenStack私有云搭建

2020-07-07 15:50:17

區塊鏈互聯網人工智能

2024-04-15 16:14:57

2014-02-28 13:46:35

Angular代碼

2016-02-23 17:50:38

認知計算IBM

2010-02-24 09:53:07

Zaurus Ubun

2022-06-22 16:31:26

阿里云數字化轉型云原生

2020-04-03 14:55:39

Python 代碼編程

2024-06-24 09:00:00

2018-05-06 23:04:12

Android Chrome OS操作系統

2022-12-22 10:37:53

數字化自動化UiPath

2024-12-17 08:04:04

2022-04-18 09:31:21

數據庫查詢MySQL

2022-05-24 15:34:35

Commvault

2020-04-25 14:06:04

BGP網絡攻擊泄露
點贊
收藏

51CTO技術棧公眾號

97超碰人人看人人| 国产精品中文在线| 男女裸体影院高潮| 永久久久久久久| 青草全福视在线| 久草视频免费在线播放| 欧美久久天堂| 免费观看不卡av| 国产精品视频一二| 亚洲男人的天堂网站| 日韩精彩视频| 91看片在线播放| 伊人亚洲精品| 顶级嫩模精品视频在线看| 伊人亚洲福利一区二区三区| 免费在线黄网站| 中文字幕日韩国产| 国产精品白浆| 亚洲精品成人少妇| 国产精品在线看| 黄色小说在线观看视频| 成人豆花视频| 亚洲欧美在线另类| 国产精品久久久久久久天堂| 亚洲图片综合网| 久草在线新免费首页资源站| 激情五月综合网| 精品久久久一区| 国产亚洲二区| 久草网在线观看| 欧美一级精品| 在线看国产一区| 欧美在线一二三区| 你懂的国产在线| 欧美亚洲国产日韩| 色综合色综合色综合色综合色综合 | 国产极品粉嫩福利姬萌白酱| 国产女人18毛片18精品| 久久一本综合| 欧美日韩国产综合视频在线观看 | 亚洲国产日产av| 草莓视频一区| 国产无遮挡又黄又爽又色| 91视频久久| 国产亚洲精品久久久久久牛牛| 韩国日本美国免费毛片| www国产一区| 最新成人av网站| 日韩精品电影网| 成人在线观看黄| 在线观看的av| 久久精品官网| 中文字幕亚洲图片| 在线免费看v片| 欧洲在线视频| 亚洲三级在线免费观看| 国产精品久久久久久免费观看 | 美女精品一区最新中文字幕一区二区三区 | 无码粉嫩虎白一线天在线观看 | 亚洲剧情一区二区| 噜噜噜在线视频| 99riav视频一区二区| 亚洲丝袜自拍清纯另类| 国产精品99久久久久久大便| 亚洲春色一区二区三区| 国产亚洲精品v| 搡老女人一区二区三区视频tv| 交换做爰国语对白| 欧美aa在线观看| 精品露脸国产偷人在视频| 自拍日韩亚洲一区在线| 福利在线视频导航| 国产精品自拍av| 98精品在线视频| 在线不卡av电影| 国产精品久一| 欧美哺乳videos| 不卡av免费在线| 亚洲制服国产| 国产91精品久久久久久久网曝门| 97精品久久久| 国产午夜手机精彩视频| 亚洲大片精品免费| 日韩午夜小视频| 黄色在线视频网| 91超碰免费在线| 欧美一区二区私人影院日本| 一区二区在线免费视频| 成人精品在线观看视频| 国产精品欧美三级在线观看| 最近2019免费中文字幕视频三| 欧美日韩色视频| 日韩视频中文| 超碰精品一区二区三区乱码| 中文字幕丰满孑伦无码专区| 国产精品国产亚洲精品| 亚洲第一偷拍网| 怡红院亚洲色图| 在线天堂资源| 亚洲国产日韩精品| 国产成人手机视频| 999国产精品一区| 91精品国产91综合久久蜜臀| 中文字幕第3页| av在线不卡免费观看| 日韩av一区在线观看| 欧美人妻一区二区三区| www.久久东京| 在线观看国产成人av片| 青青草成人免费| 亚洲综合专区| 久久在线视频在线| 亚洲精品成人在线视频| 欧美在线精品一区| 最近2019好看的中文字幕免费| 妺妺窝人体色www婷婷| 肉肉av福利一精品导航| 欧美亚洲另类视频| 九一国产在线观看| 国产精品一二| 666精品在线| 成年人在线观看视频| 国产亚洲精品aa午夜观看| 久中文字幕一区| 日韩精品视频无播放器在线看| 成人夜色视频网站在线观看| 日本在线播放一区| 久热在线观看视频| 欧美成人福利视频| www日韩在线| 久久99精品视频| 91免费视频国产| www.成人在线观看| 欧美高清在线一区| 成年人网站大全| 日韩大胆成人| 在线视频精品一| 黄色片免费观看视频| 成人免费看视频| 国产精品av免费观看| 亚洲电影二区| 日韩免费观看高清完整版在线观看| 香蕉视频xxxx| 久久视频在线| 国产日韩欧美另类| 亚洲精品97久久中文字幕无码 | dy888夜精品国产专区| 日本美女在线中文版| 在线观看日产精品| 黄免费在线观看| 98精品视频| 国产主播在线一区| 日本福利在线| 一区二区三区四区激情| 久久久久久久久久久久久久久国产| **日韩最新| 久久精品视频导航| 日本一级淫片色费放| 水野朝阳av一区二区三区| 91免费看片网站| 操你啦视频在线| 欧美日韩在线视频一区| 日本中文字幕片| 亚洲资源在线| 久久成人精品电影| 亚洲第一色视频| 午夜精品福利一区二区蜜股av| 久久精品视频91| 黑人操亚洲人| 国产欧美精品日韩精品| 国产激情在线视频| 精品精品国产高清a毛片牛牛| 国产中文字字幕乱码无限| 成人精品视频一区二区三区尤物| 欧美日韩精品免费观看| 国产原创在线观看| 色婷婷亚洲精品| 欧美xxxx精品| 在线精品观看| 亚洲free嫩bbb| 二区在线观看| 欧美人xxxx| 青青草成人免费| 久久日韩粉嫩一区二区三区| 亚洲欧美精品中文字幕在线| 国产麻豆剧传媒精品国产| 欧美男男gaygay1069| 波多野结衣与黑人| 黄色在线观看国产| 久久久蜜桃精品| 亚洲激情国产精品| brazzers精品成人一区| 日韩电影免费在线看| 亚洲人成网站在线播放2019| 日韩av影片| 伊人亚洲福利一区二区三区| 国产高清在线观看视频| 国产精品久久毛片a| 日本泡妞xxxx免费视频软件| 性xx色xx综合久久久xx| 欧美日韩激情网| 最好看的中文字幕| 日韩精品dvd| 热re91久久精品国99热蜜臀| 亚洲精品久久久久avwww潮水| 欧美日韩亚洲天堂| 69xx绿帽三人行| 久久久精品黄色| 色欲无码人妻久久精品| 天堂久久久久va久久久久| 国产精品88久久久久久妇女| 免费精品国产的网站免费观看| 91精品啪aⅴ在线观看国产| 三妻四妾完整版在线观看电视剧 | 欧美性猛交xxxx免费看| 国产精品国产三级国产传播| 日韩成人免费在线| 欧美中文字幕在线观看视频| 精品亚洲成人| 精品日本一区二区三区在线观看 | 久久成人高清| 国产精品一区二区三区在线 | 欧美福利视频一区| 国产精品成人69xxx免费视频| xnxx国产精品| 欧美一级黄色影院| 99伊人成综合| 成年人网站国产| 欧美国产不卡| 成人资源av| 深夜成人在线| 久久人人97超碰精品888| 性一交一乱一乱一视频| 欧美日韩精品一区二区天天拍小说 | 中文字幕免费看| 成人黄色av网站在线| 俄罗斯女人裸体性做爰| 国产一区二区三区美女| 国产精品视频网站在线观看 | 精品一区二区三区无码视频| 亚洲国产一成人久久精品| 亚洲一区二区免费在线| 欧美aaaaaa| 国产欧美精品在线| 69堂免费精品视频在线播放| 日韩在线视频免费观看| 成人高清网站| 国产一区二区三区在线视频| 韩国三级在线观看久| 4438x亚洲最大成人网| 国产精品一区二区三区毛片淫片| 欧美日韩经典丝袜| 欧美精品制服第一页| 精品人妻一区二区三区蜜桃 | 91久久精品一区二区别| 成人在线黄色| 国产精品午夜国产小视频| а√天堂资源国产精品| 国产精品午夜视频| 成人激情久久| 国产精品区二区三区日本| 久久超级碰碰| 国产成人激情小视频| 色网站在线看| 日韩视频在线观看免费| 无码国产伦一区二区三区视频| 色综合视频一区二区三区高清| 国产视频91在线| 都市激情亚洲色图| 国产成人无码专区| 欧美日韩色综合| 成人午夜视频在线播放| 欧洲精品一区二区三区在线观看| 中文字幕日韩国产| 日韩一级高清毛片| 午夜视频福利在线观看| 亚洲午夜女主播在线直播| 日本欧美在线视频免费观看| 精品国产91乱码一区二区三区| 免费在线观看av的网站| 午夜精品福利视频网站| 精品国产一区二区三区四| 99在线热播| 成人福利网站| 欧美精品aaa| 青草久久伊人| 中文字幕精品av| 天天色天天射天天综合网| 欧美在线一级va免费观看| 91p九色成人| 97久久精品午夜一区二区| 欧美激情影院| 男人天堂成人网| 成人高清电影网站| 天天干天天色天天爽| 99精品99| www欧美激情| 成人激情视频网站| 少妇的滋味中文字幕bd| 亚洲成人自拍一区| 中文资源在线播放| segui88久久综合9999| 久久永久免费| 日本超碰在线观看| 国产激情一区二区三区桃花岛亚洲| 麻豆传传媒久久久爱| 久久av中文字幕片| 欧产日产国产精品98| 国产精品理伦片| 国内免费精品视频| 欧美一区二区久久久| 亚洲av成人无码网天堂| 久久av.com| 国产成人精品一区二三区在线观看| 成人国产1314www色视频| 日本一本不卡| 久激情内射婷内射蜜桃| 国产一区日韩二区欧美三区| 欧美丰满美乳xxⅹ高潮www| 五月天一区二区| 国内精品久久久久久久久久| 中文字幕亚洲一区二区三区五十路| av中文资源在线资源免费观看| 成人免费观看网址| 国产一区二区三区视频在线| 日本一区二区不卡高清更新| 99综合在线| 亚洲一级Av无码毛片久久精品| 福利一区福利二区| 欧美做爰啪啪xxxⅹ性| 欧美在线免费播放| 日韩免费av网站| 亚洲激情在线观看| 大桥未久在线播放| 8090成年在线看片午夜| 大奶在线精品| 国产又粗又猛又爽又黄的网站| 狠狠色丁香久久婷婷综合丁香| 日韩精品一区二区三区四区| 亚洲欧美日韩精品永久在线| 欧美激情亚洲综合一区| 国产精品一区三区在线观看| 中文字幕一区二区三区四区五区| 欧美大黑bbbbbbbbb在线| 久久精品视频91| 国产午夜精品一区二区三区四区| 欧美另类videosbestsex日本| 国产自产视频一区二区三区| 美女视频久久久| 欧美一级欧美一级在线播放| av毛片在线免费| 不卡视频一区二区三区| 亚洲乱码久久| 成人精品在线观看视频| 日本韩国精品一区二区在线观看| 亚洲天堂视频在线| 欧美mv日韩mv国产| 国精产品一区一区三区mba下载| 高清国产在线一区| 亚洲乱码久久| av手机在线播放| 欧美日韩国产在线播放网站| 久做在线视频免费观看| 99久久国产免费免费| 精品二区视频| 中文字幕在线看高清电影| 91豆麻精品91久久久久久| 男人的天堂在线视频免费观看| 91亚洲精品一区| 亚洲激精日韩激精欧美精品| 玖草视频在线观看| 欧美性大战久久| 18+激情视频在线| 久久www免费人成精品| 永久亚洲成a人片777777| 精品伦一区二区三区| 国产精品天干天干在线综合| 国产情侣自拍小视频| 国产69精品99久久久久久宅男| 亚洲第一论坛sis| 色一情一区二区| 国产午夜三级一区二区三| 91在线视频国产| 一区二区三区视频在线| 亚洲精品777| 国产精品无码人妻一区二区在线| 久久九九全国免费| 精品国产免费无码久久久| 91av视频在线播放| 香蕉精品视频在线观看| 成人免费无码大片a毛片| 亚洲欧美一区二区三区国产精品 | 久久精品久久综合| 人妻丰满熟妇aⅴ无码| 欧美欧美欧美欧美| xxxx另类黑人| 亚洲一区二区三区色| 99久久国产综合精品色伊| 免费网站观看www在线观| 亚洲欧美日韩天堂|