精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲人永久免费| 26uuu亚洲综合色| 欧美成aaa人片在线观看蜜臀| 亚洲午夜精品在线观看| h片视频在线观看| 99国产精品国产精品毛片| 日本久久亚洲电影| 亚洲色婷婷一区二区三区| 老司机精品在线| 欧美三级乱人伦电影| 日本大胆人体视频| 精品99又大又爽又硬少妇毛片| 精东粉嫩av免费一区二区三区| 高清一区二区三区四区五区| 香蕉视频久久久| 一区二区三区国产好| 色综合久久六月婷婷中文字幕| 自拍偷拍视频在线| 日韩精品一二| 国产91精品一区二区麻豆网站| 日韩美女在线观看| 国产无码精品在线观看| 欧美国产小视频| 日韩不卡在线观看| 免费黄色在线播放| 粉嫩91精品久久久久久久99蜜桃| 亚洲综合激情另类小说区| 欧美一区二区在线视频观看| www.色呦呦| 男人的j进女人的j一区| 91精品国产免费久久久久久 | 日韩电影精品| 精品成人乱色一区二区| 激情六月天婷婷| 国产福利在线| 久久久久国色av免费看影院| 国产精华一区| 国产黄a三级三级看三级| 琪琪一区二区三区| 日韩免费高清在线观看| 999这里只有精品| 精品av久久久久电影| 久久精品国产一区| 日本午夜精品视频| 狠狠色狠狠色综合婷婷tag| 亚洲精品720p| 男人的天堂影院| jizz18欧美18| 精品欧美一区二区在线观看| 中文字幕第六页| 国产亚洲精aa在线看| 欧美日韩mp4| 免费一区二区三区在线观看| 国产精品伦一区二区| 欧美在线你懂的| 亚洲色图38p| 免费污视频在线一区| 91豆麻精品91久久久久久| 116极品美女午夜一级| 桃色av一区二区| 欧美性高潮床叫视频| 成人观看免费完整观看| 亚洲精品福利电影| 色乱码一区二区三区88| 日本www.色| 欧美系列精品| 欧美一级高清大全免费观看| 亚洲av无码久久精品色欲| 欧美二区观看| 精品国产sm最大网站免费看| 香港三日本8a三级少妇三级99| 欧美中文一区| 国产亚洲精品一区二区| 欧美h片在线观看| 一区二区免费不卡在线| 欧美激情亚洲综合一区| 国产午夜福利一区二区| 久久人人97超碰国产公开结果| 国产精品91久久久| 国产又粗又大又爽视频| 国产xxx精品视频大全| 电影午夜精品一区二区三区 | 日本免费成人| 日韩一级完整毛片| 国产肉体xxxx裸体784大胆| 视频国产一区| 久久精品国产一区二区三区| 伊人365影院| 天堂久久一区二区三区| 91精品视频在线看| 欧美性受xxxx狂喷水| 久久嫩草精品久久久精品一| 中文字幕色一区二区| 都市激情久久综合| 在线观看日韩av先锋影音电影院| 久久综合在线观看| 美国十次av导航亚洲入口| 国产一区二区三区丝袜| 久久久久久久久久99| 视频一区中文字幕| 99re在线视频上| 免费国产在线视频| 一区二区三区成人| 成人免费视频久久| 成人在线视频你懂的| 国产一区二区三区在线观看网站 | 一区二区三区欧美精品| 精品国产18久久久久久洗澡| 色婷婷av一区二区三区在线观看| 日本熟妇毛耸耸xxxxxx| 老司机一区二区| 久久精品99久久| 成人高清免费在线| 色综合久久综合中文综合网| 国产清纯白嫩初高中在线观看性色| 蜜臀av免费一区二区三区| 色综合五月天导航| 亚洲香蕉在线视频| 久久久亚洲综合| 欧美视频在线观看视频| 国产精品亚洲欧美一级在线| 亚洲日韩中文字幕在线播放| 国产奶水涨喷在线播放| 精品亚洲国产成人av制服丝袜| 欧美精品亚洲精品| 黄页在线观看免费| 日韩午夜中文字幕| 性少妇xx生活| 老司机午夜精品视频| 国产综合第一页| 亚洲制服国产| 欧美精品在线观看一区二区| 色哟哟精品观看| 亚洲经典视频在线观看| 91免费在线观看网站| 黄视频网站在线看| 欧美日韩国产在线观看| 久久久久久久久久久亚洲| 色综合天天狠狠| 亚洲精品国产suv| 熟妇人妻久久中文字幕| 成年人在线视频免费观看| 久久精品夜色噜噜亚洲aⅴ| 亚洲人成无码网站久久99热国产| 亚洲日本中文| 最近2019中文字幕大全第二页 | 亚洲丝袜啪啪| 中文字幕欧美视频在线| 亚洲国产精品无码久久久| fc2成人免费人成在线观看播放| 男女啪啪免费观看| 精品麻豆剧传媒av国产九九九| 色狠狠久久aa北条麻妃| 一区二区三区www污污污网站| 中文一区二区在线观看| 日韩一级理论片| 成人精品影视| 国产视频观看一区| 9色在线视频网站| 欧美日韩性生活| 国产在线观看免费视频软件| 蜜桃视频一区二区三区在线观看| 亚洲制服中文| 白嫩亚洲一区二区三区| 欧美日本高清视频| 粉嫩小泬无遮挡久久久久久| 国产人妻精品一区二区三区| 丝袜美女在线观看| 欧美午夜久久久| 国产女主播喷水高潮网红在线| 日韩激情图片| 亚洲综合激情另类小说区| 精品人妻一区二区三| 欧美日韩一区二区高清| 国产伦精品一区二区三| 亚洲伊人av| 中文字幕一区电影| 亚洲黄色在线播放| 欧美性猛交xxxx富婆| 极品蜜桃臀肥臀-x88av| 国产一区二区三区免费观看| 成人精品视频在线播放| 在线亚洲a色| 国产有码一区二区| 欧美极品少妇videossex| 亚洲老头同性xxxxx| 在线不卡免费视频| 亚洲国产精品久久久久婷婷884| 中文字幕一区二区久久人妻网站| 美女国产一区二区| 久久艹国产精品| 欧美在线免费看视频| 18成人在线| 亚洲爱爱视频| 欧美高清视频一区二区| 欧美色视频免费| 日韩一级黄色大片| 国产一级一级国产| 亚洲一区二区三区爽爽爽爽爽| 实拍女处破www免费看| 国产一区二区三区美女| 人妻内射一区二区在线视频| 综合激情视频| 天堂资源在线亚洲视频| 韩国精品福利一区二区三区| 国产精品偷伦视频免费观看国产| 99thz桃花论族在线播放| 视频在线一区二区| 青青青草原在线| 日韩亚洲国产中文字幕欧美| 无码人妻一区二区三区免费| 亚洲综合免费观看高清完整版在线 | 亚洲小说区图片区| 无码免费一区二区三区免费播放| 白嫩白嫩国产精品| 国产一区视频在线| 三级成人在线| 国产色婷婷亚洲99精品小说| 视频在线观看一区二区| 91肉色超薄丝袜脚交一区二区| 亚洲国产精品一区二区www| 久久一级免费视频| 2022国产精品视频| 永久免费未满蜜桃| 激情久久五月天| 我看黄色一级片| 乱码第一页成人| 免费看国产一级片| 91久久国产综合| 外国精品视频在线观看 | 色综合网站在线| 国产一级大片免费看| 国产一级片网址| 国产欧美一区二区精品仙草咪 | 欧美97人人模人人爽人人喊视频| 97国产精品人人爽人人做| www.99re6| 神马精品久久| 欧美日韩国产精品| 国产精品9191| 亚洲午夜久久久久| 九九热国产在线| 综合五月婷婷| 成人在线视频网址| 一区二区日韩| 国产99午夜精品一区二区三区| 高清不卡一区| 亚洲在线视频观看| 99久久99九九99九九九| 国产乱码精品一区二区三区av| 国产在线精品一区二区三区》| 欧美a在线观看| 91九色偷拍| 亚洲成人黄色| www.久久爱.cn| 中文字幕一区二区三区四区久久 | 福利视频网站一区二区三区| 欧美高清性xxxxhdvideosex| 欧美三级午夜理伦三级小说| 狠狠色噜噜狠狠狠狠色吗综合| 国产乱论精品| 精品性高朝久久久久久久| 国产又粗又猛又爽又黄的| 欧美日韩aaa| 国产成人精品毛片| 欧美va在线播放| 亚洲色图欧美视频| 亚洲性av在线| 国产欧美精品aaaaaa片| 午夜剧场免费在线观看| 国产传媒日韩欧美成人| 动漫美女无遮挡免费| 成人精品视频一区二区三区尤物| 国产一级黄色录像| 久久久久久久国产精品影院| 亚洲午夜精品久久久久久高潮| 国产精品欧美久久久久无广告 | 精品国产影院| 欧美裸体网站| 国产精品久久久久久久| 成年人网站国产| 久久久人人人| 亚洲精品永久视频| 菠萝蜜视频在线观看一区| 91久久免费视频| 亚洲青青青在线视频| 久久国产精品免费看| 欧美人妇做爰xxxⅹ性高电影| 精品人妻一区二区三区含羞草| 精品亚洲男同gayvideo网站| 在线观看免费网站黄| 久久久在线观看| 91九色综合| 国产九色精品| 97精品国产一区二区三区| 日韩 欧美 视频| 欧美bbbbb| 精品一区二区视频在线观看| 中文字幕av一区二区三区免费看| 久久久久久久久久久网| 在线视频亚洲一区| 神马午夜精品95| 久久九九免费视频| 自拍一区在线观看| 成人黄色激情网| 久本草在线中文字幕亚洲| 伊人久久大香线蕉午夜av| 国产视频欧美| 91欧美一区二区三区| 国产日韩精品一区二区三区在线| 精品99在线观看| 欧美精品九九99久久| 精品推荐蜜桃传媒| 久久久免费精品| 国产中文欧美日韩在线| 日韩福利在线| 亚洲一区二区三区高清不卡| 三上悠亚 电影| 国产精品久久久久9999吃药| yjizz国产| 亚洲国产精品999| 性欧美1819sex性高清大胸| 国产精品福利久久久| 欧美综合精品| 国产精品又粗又长| 高清国产一区二区三区| 阿v天堂2014| 日本国产一区二区| 香港一级纯黄大片| 久久久噜噜噜久久久| 日韩精品久久久久久久软件91| 在线国产99| 人人狠狠综合久久亚洲| 久久亚洲AV无码专区成人国产| 天天综合网天天综合色| 欧美一级做性受免费大片免费| 欧美大肥婆大肥bbbbb| 亚洲精品第一| 制服诱惑一区| 久草中文综合在线| 久久久久久视频| 91精品国产综合久久国产大片| 中文字幕在线观看日本| 国产精品久久久久久av下载红粉 | 日韩精品福利片午夜免费观看| 六月丁香婷婷久久| 四虎影视1304t| 欧美日韩视频专区在线播放| av在线之家电影网站| 国产精品美女久久| 窝窝社区一区二区| 91精品国产综合久久香蕉的特点| 亚洲一区二区三区涩| 亚洲欧美综合一区二区| 高清不卡一区二区在线| 成人精品一区二区三区| 92久久精品一区二区| 美女视频黄久久| 国产精品人成电影| 中国老头性行为xxxx| 免费在线看一区| 国产日韩视频在线观看| 亚洲色婷婷一区二区三区| 18国产精品| 国产日韩欧美一区二区三区四区| 激情久久久久| 亚洲中文字幕一区| 色国产精品一区在线观看| 成年人在线视频免费观看| 亚洲va久久久噜噜噜久久天堂| 午夜精品视频| 在线观看日韩精品视频| 欧美在线观看一区| 国产日产一区二区三区| 国产视频99| 日韩中文字幕一区二区三区| 精品国产国产综合精品| 欧美不卡在线视频| 卡通欧美亚洲| 欧美日韩视频免费在线观看| 国产成人午夜精品影院观看视频| 久久久午夜影院| 日韩在线精品一区| 综合激情网...| 亚洲免费av一区二区三区| 亚洲品质自拍视频网站| 日韩av高清在线| 国产一区香蕉久久| 亚洲一区黄色| 日韩激情小视频| 日韩不卡在线观看| 99亚洲男女激情在线观看| www.成年人视频| 欧美国产精品劲爆| 日韩在线观看视频网站| 国产精品视频永久免费播放| 在线成人欧美| 亚洲欧美卡通动漫| 日韩精品在线视频美女| 国产欧美88|