""" 文檔字符串 docstring, 是 package, module, class, method, function 級別的注釋,可以通過 doc 成員訪問到,注釋內容在一對雙引號 優先使用英文寫注釋,英文不好全部寫中文,強行使用英文可能導致大家都看不懂 1.所有 import 盡量放在文件開頭,在 docstring 下面,其他變量定義的上面 2.不要使用 from foo import * 3.import 需要分組,每組之間一個空行,每個分組內的順序盡量采用字典序,分組順序是: 3.1 標准庫 3.2 第三方庫 3.3 本項目的 package 和 module 4.不要使用隱式的相對導入(implicit relative imports) 可以使用顯示的相對導入(explicit relative imports),如 from ..utils import parse 最好使用全路徑導入(absolute imports) 5.同一個 package/module 下的內容可以寫一起 6.為了避免可能出現的命名沖突,可以使用 as 或導入上一級命名空間 """ import os import sys import db from flask import Flask, render_template, jsonify from collections import defaultdict as my_dict # 這是一個正確注釋,#后面需要一個空格,如下為特例 #!/usr/bin/python # 操作符兩端加一個空格,如 +, -, *, /, |, &, = a = 1 + 2 b = 10 - 1 c = 1 * 2 d = 10 / 5 e = 10 | 20 f = 5 & 6 # 在參數列表里的 = 兩端不需要空格 def add(num1=1, num2=2): return num1 + num2 # function 和 class 頂上兩個空行 class MyClass(object): def my_function1(self): pass # class 的 method 之間一個空行 def my_function2(self): # 函數內邏輯無關的段落之間空一行,不要過度使用空行 # 邏輯1 # 邏輯2 # 邏輯3 return # 不要把多個語句寫在一行,然后用 ; 隔開 add(1, 2) add(3, 4) # 括號((), {}, [])內的兩端不需要空格 tmp = ('name1', 'name2') # if/for/while 語句中,即使執行語句只有一句,也要另起一行 if True: print('另起一行') # 每一行代碼控制在80字符以內,例子如下: # 面對搶票軟件的花樣,有專家提醒,雖然理論上搶票軟件比人工刷新更快,但12306已經屏蔽了許多搶票端口並推出了“官方搶票” # 的候補功能——也就是,當沒有余票時,12306會在車次列表中出現“候補”的字樣。旅客可根據需求選擇車次、席別,在成功支付 # 候補預付款后,如果有匹配需求的車票,系統會自動生成已支付訂單,並退回差額;如果沒有,系統將全額退還預付款。那么,這個 # 候補功能和市面上的搶票軟件誰更好用?如果用搶票軟件,又有哪些套路要小心? # 使用 \ 或 () 控制換行 def foo(tmp1='aa', tmp2='bb', tmp3='cc', tmp4='dd', tmp5='ee', tmp6='ff', tmp7='gg', tmp8='hh'): pass # 使用有意義的,英文單詞或詞組,絕對不要使用漢語拼音 address = 'suzhou' # package/module 名中不要出現 - # 不要輕易使用 try/except,except 后面需要指定捕捉的異常,裸露的 except # 會捕捉所有異常,意味着會隱藏潛在的問題 # 可以有多個 except 語句,捕捉多種異常,分別做異常處理 age = '111' try: age = int(age) except(TypeError, ValueError): render_template() # 使用 finally 子句來處理一些收尾操作 try: db.session.commit() except sqlalchemy.exc.SQLAlchemyError: # 或者更具體的異常 db.session.rollback() finally: db.session.close() # 顯示的寫明父類,如果不是繼承自別的類,就繼承自 object 類 # 使用 super 調用父類的方法 # 支持多繼承,即同時有多個父類,建議使用 Mixin class MyClass(object): pass