如何寫出更 pythonic 的 Python 代碼

  • 交換兩個變量的值
a, b = b, a


  • (在合適的時候)使用推導式

列表推導式

l = [x*x for x in range(10) if x % 3 == 0]
#l = [0, 9, 36, 81]

還有字典和集合的推導式


  • (在合適的時候)使用生成器

生成器是可迭代對象御蒲,但在每次調用時才產(chǎn)生一個結果坎穿,而不是一次產(chǎn)生整個結果坚冀。

squares = (x * x for x in range(10))


  • 讀取文件
with open('filename') as f:
    data = file.read()

with 相比于一般的 open顶猜、close 有異常處理嗅钻,并能保證關閉文件昭灵。相比于 try…finally 代碼更簡潔。


  • 鏈式比較
0 < a < 10


  • 真值判斷
name = 'v1coder'
if name:

# 而不是
if name != '':

即渐逃,對于任意對象够掠,直接判斷其真假,無需寫判斷條件

真假值表


  • 字符串反轉
def reverse_str( s ):
    return s[::-1] 


  • 字符串列表的連接
str_list = ["Python", "is", "good"]  
 
res =  ' '.join(str_list) #Python is good


  • for…else…語句
for x in xrange(1,5):
    if x == 5:
        print 'find 5'
        break
else:
    print 'can not find 5!'

如果循環(huán)全部遍歷完成茄菊,沒有執(zhí)行 break疯潭,則執(zhí)行 else 子句


  • 列表求和,最大值面殖,最小值
numList = [1,2,3,4,5]   
 
sum = sum(numList)
maxNum = max(numList)
minNum = min(numList)


  • 遍歷列表同時輸出索引和元素
choices = ['pizza', 'pasta', 'salad', 'nachos']

for index, item in enumerate(choices):
  print(index, item)

# 輸出:
0 pizza
1 pasta
2 salad
3 nachos


  • 遍歷字典同時輸出鍵和值
dict = {'Google': 'www.google.com', 'Runoob': 'www.runoob.com', 'taobao': 'www.taobao.com'}
 
print "字典值 : %s" %  dict.items()
 
for key,values in  dict.items():
    print key,values

# 輸出:
字典值 : [('Google', 'www.google.com'), ('taobao', 'www.taobao.com'), ('Runoob', 'www.runoob.com')]
Google www.google.com
taobao www.taobao.com
Runoob www.runoob.com


  • 根據(jù)鍵名獲取字典中對應的值
dict = {'Name': 'Zara', 'Age': 27}

print(dict.get('Age'))
print(dict.get('Sex', "Never"))

# 輸出:
27
Never

用 get 方法竖哩,不存在時會得到 None,或者指定的默認值畜普。



pythonic 可以理解為Python 式的優(yōu)雅期丰,簡潔、明了吃挑,可讀性高钝荡。


PEP 8 -- Style Guide for Python Code
Python語言規(guī)范 - Google
Pythonic 是什么意思?

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舶衬,一起剝皮案震驚了整個濱河市埠通,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逛犹,老刑警劉巖端辱,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異虽画,居然都是意外死亡舞蔽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門码撰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渗柿,“玉大人,你說我怎么就攤上這事《淦埽” “怎么了颊亮?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長陨溅。 經(jīng)常有香客問我终惑,道長斗幼,這世上最難降的妖魔是什么钦购? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任隅熙,我火速辦了婚禮嗜暴,結果婚禮上,老公的妹妹穿的比我還像新娘县钥。我一直安慰自己颤练,他們只是感情好她倘,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布脯厨。 她就那樣靜靜地躺著,像睡著了一般坑质。 火紅的嫁衣襯著肌膚如雪合武。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天涡扼,我揣著相機與錄音稼跳,去河邊找鬼。 笑死吃沪,一個胖子當著我的面吹牛汤善,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播票彪,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼红淡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了降铸?” 一聲冷哼從身側響起在旱,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎推掸,沒想到半個月后桶蝎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡谅畅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年登渣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毡泻。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡胜茧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出牙捉,到底是詐尸還是另有隱情竹揍,我是刑警寧澤敬飒,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站芬位,受9級特大地震影響无拗,放射性物質發(fā)生泄漏。R本人自食惡果不足惜昧碉,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一英染、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧被饿,春花似錦四康、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至论颅,卻和暖如春哎垦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恃疯。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工漏设, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人今妄。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓郑口,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盾鳞。 傳聞我的和親對象是個殘疾皇子犬性,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345