中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

改善Python程序的建議

發布時間:2020-09-23 10:57:00 來源:億速云 閱讀:115 作者:Leah 欄目:編程語言

改善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)

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新绛县| 永定县| 泽普县| 长治市| 绍兴县| 无棣县| 岳西县| 江源县| 平顺县| 合江县| 米易县| 湘阴县| 交口县| 宁南县| 襄垣县| 保靖县| 兴安盟| 巨野县| 博湖县| 句容市| 邛崃市| 通道| 海城市| 桂阳县| 呼图壁县| 南平市| 南召县| 双牌县| 合山市| 永州市| 封丘县| 邵武市| 绩溪县| 和平区| 沙坪坝区| 绿春县| 兴安县| 吉首市| 庐江县| 丰镇市| 永川市|