您好,登錄后才能下訂單哦!
改善Python程序的建議?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
建議1:理解Pythonic概念
·Pythonic定義
·pythonic:充分體現Python自身特色的代碼風格。
·代碼風格
·交換兩個數字
利用Python的packaging/unpackaging機制。
a, b = b, a
·遍歷一個容器
for i in alist: do_sth_with(i)
·安全地關閉文件描述符
with open(path, 'r') as f: do_sth_with(f)
寫出來的代碼具有Python味,而不是看著像C語言代碼。
·標準庫
字符串格式化一般這樣寫:
print("Hello %s!" % ('Tom',))
但是真正具有Pythonic的代碼是這樣的:
print("{great} from {language}.".format(greet = 'Hello, World', language = 'Python'))
·Pythonic的庫或框架
Flask:
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello, World!" if __name__ == "__main__": app.run()
建議2:編寫Pythonic代碼
·避免劣化代碼
·避免只用大小寫來區分不同的對象。
·避免使用容易引起混淆的名稱。
·不要害怕過長的變量名稱。
·深入認識Python有助于編寫Pythonic代碼
·掌握Python提供給我們的語言特性和庫特性(Language Reference和Library Reference)。
·深入學習業界公認的比較Pythonic的代碼,比如Flask、gevent和requests等。
·pep-8——Python編碼風格指南。(其它還有:Pychecker、Pylint、Pyflakes等)
建議3:理解Python與C語言的不同之處(切忌用C語言的思維和風格來編寫Python代碼)
·“縮進”與“{}”
python使用嚴格的代碼縮進方式分隔代碼塊。(unexpected indent錯誤)
·“與”
沒有區別,注意轉義。
·三元操作符“?:”
三元操作符的語法形式為:C?X:Y,表示當條件C為True時,取值X,C為False時,取值Y。在Python中的等價形式為X if C else Y。
·switch…case
Python沒有像C語言的switch…case分支語句。
通過if…elif…else實現:
if n == 0: do_sth elif n > 0: do_sth else: do_sth
還可以通過跳轉表實現。
def f(x): return { 0: "You typedzero.\n", 1: "You are in top.\n", 2: "n is an even number.\n" }.get(n, "Only single-digit numbers are allowed\n")
建議4:在代碼中適當添加注釋(用來解釋代碼的功能、原因和想法;對于不再需要的代碼應該直接刪除而不是注釋掉,可以使用版本控制工具找回代碼)
·使用塊或者行注釋的時候僅僅注釋那些復雜的操作、算法,還有可能別人難以理解的技巧或者不夠一目了然的代碼。
·注釋和代碼隔開一定的距離,同時在塊注釋之后最好能夠多留幾行空白再寫代碼。
·給外部可訪問的函數和方法添加注釋文檔。注釋要清楚地描述方法的功能,并對參數、返回值以及可能發生的異常進行說明,使得外部調用它的人員僅僅看docstring就能正確使用。較為復雜的內部方法也需要進行注釋。(Pycharm可以幫助解決)
·推薦在文件頭中包含copyright申明、模塊描述等。(Pycharm可以幫助解決)
建議5:通過適當添加空行使得代碼布局更為優雅合理
·在一組代碼表達完一個完整的思路之后,應該用空白行進行間隔(if塊、while塊等)
·盡量保持上下文語義的易理解性(調用時最好調用者在上,被調用者在下)
·避免過長的代碼行,每行最好不要超過80個字符。(Pycharm可以幫助解決)
·不要為了保持水平對齊而使用多余的空格
·一行不要有多個命令
·空格的使用能夠在需要強調的時候警示讀者,在疏松關系的實體間起到分隔作用,而在具有緊密關系的時候不要使用空格。
建議6:編寫函數的4個原則
·函數設計要盡量短小,嵌套層次不宜過深。
·函數聲明應該做到合理、簡單、易于使用。
·函數參數設計應該考慮向下兼容。
·一個函數只做一件事情,盡量保證函數語句粒度的一致性。
建議7:將常量集中到一個文件
·constant.py
class _const: class ConstError(TypeError): pass class ConstCaseError(ConstError): pass def __setattr__(self, name, value): if self.__dict__.has_key(name): raise(self.ConstError, "Can't change const.%s" % name) if not name.isupper(): raise(self.ConstCaseError, "const name %s is not all uppercase" % name) self.__dict__[name] = value import sys, const sys.modules[__name__] = _const() const.MY_CONSTANT = 1 const.MY_SECOND_CONSTANT = 2 const.MY_THIRD_CONSTANT = 'A' const.MY_FORTH_CONSTANT = 'B'
·其他模塊中引用
from constant import const print(const.MY_SECOND_CONSTANT)
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。