本系列文章爲《編寫高質量代碼——改善Python程序的91個建議》的精華彙總。
Pythonic的代碼就是具備Python獨特風格的代碼。通俗說來,就是在保證代碼可讀性的前提下,儘量地簡潔、優雅,看起來像僞代碼同樣。python
具備 Python 代碼風格的例子算法
str.format()
格式化字符串,是最Pythonic的字符串格式化方法。# 交換兩個變量 a, b = b, a # for循環遍歷容器 for elem in alist: do_sth_with(elem) # format格式化字符串 print("{greet} from {language}!".format(greet="hello, world!", language="Python"))
注意要避免的事:框架
深刻理解Pythonic的幾個途徑:函數
{}
分隔代碼塊,Python中用縮進分隔,避免混用空格和Tab鍵。'
與"
: 在C語言中,單引號'
表示單個的字符型數據(char),雙引號"
表示字符串,默認以\0
結尾;在Python中,'
和"
無明顯區別。?:
: C語言中的三元操做符 C?X:Y
,表示當條件C爲True的時候,取值X,不然取值Y。在Python中的等價形式爲 X if C else Y
。switch...case
分支語句,Python中可使用if...elif...else...
代替。Python中有3種形式註釋:工具
須要注意:佈局
x = x + 1 # 這樣的註釋略近 x = x + 1 # 更好的註釋位置
def get_lines(name, lines): """Return lines that begin with name. Lines are expected to look like: name: space separated values Args: name: string, parameter name. lines: iterable of string, lines in the file. Returns: List of values in the lines that match. """ retval = [] matches = itertools.ifilter(lambda x: x.startswith(name + ":"), lines) for line in matches: retval.extend(line[len(name) + 1 :].split()) return retval
#!/usr/bin/python # -*- coding: utf-8 -*- # # Copyright 2014 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not ...
def A(): B() def B(): pass
空格的使用學習
=
,比較(==, <, >, !=, <=, >=, in, not in, is, is not
),布爾運算(and, or, not
))的左右兩邊。如x == 1
[]
之間不須要空格,函數的參數=
兩側不須要空格。本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈