日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python3 系列之 编程规范篇

發布時間:2025/4/16 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python3 系列之 编程规范篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編碼規范

  • 編碼
    • 如無特殊情況, 文件一律使用 UTF-8 編碼
    • 如無特殊情況, 文件頭部必須加入 #--coding:utf-8-- 標識
  • 縮進
    • 統一使用 4 個空格進行縮進
  • 引號
    • 自然語言 使用雙引號 "...",例如錯誤信息;很多情況還是 unicode,使用u"你好世界"
    • 機器標識 使用單引號 '...' 例如 dict 里的 key,例如 dict 里的 key
    • 正則表達式 使用原生的雙引號 r"..."
    • 文檔字符串 (docstring) 使用三個雙引號 """......"""
  • 空行
    • 模塊級函數和類定義之間空兩行
    • 類成員函數之間空一行
    • 可以使用多個空行分隔多組相關的函數
    • 函數中可以使用空行分隔出邏輯相關的代碼
class A:def __init__(self):passdef hello(self):passdef main():pass
  • Import 語句
    • import 語句應該分行書寫
    • import語句應該使用 absolute import
    • import語句應該放在文件頭部,置于模塊說明及docstring之后,于全局變量之前
    • import語句應該按照順序排列,每組之間用一個空行分隔
    • 導入其他模塊的類定義時,可以使用相對導入
    • 如果發生命名沖突,則可使用命名空間
# 正確的寫法 import os import sys# 不推薦的寫法 import sys,os# 正確的寫法 from subprocess import Popen, PIPE # 正確的寫法 from foo.bar import Bar# 不推薦的寫法 from ..bar import Bar import os import sysimport msgpack import zmqimport foo from myclass import MyClass import bar import foo.barbar.Bar() foo.bar.Bar()
  • 空格
    • 在二元運算符兩邊各空一格[=,-,+=,==,>,in,is not, and]
    • 函數的參數列表中,,之后要有空格
    • 函數的參數列表中,默認值等號兩邊不要添加空格
    • 左括號之后,右括號之前不要加多余的空格
    • 字典對象的左括號之前不要多余的空格
    • 不要為對齊賦值語句而使用的額外空格
# 正確的寫法 i = i + 1 submitted += 1 x = x * 2 - 1 hypot2 = x * x + y * y c = (a + b) * (a - b)# 不推薦的寫法 i=i+1 submitted +=1 x = x*2 - 1 hypot2 = x*x + y*y c = (a+b) * (a-b) # 正確的寫法 def complex(real, imag):pass# 不推薦的寫法 def complex(real,imag):pass # 正確的寫法 def complex(real, imag=0.0):pass# 不推薦的寫法 def complex(real, imag = 0.0):pass # 正確的寫法 spam(ham[1], {eggs: 2})# 不推薦的寫法 spam( ham[1], { eggs : 2 } ) # 正確的寫法 dict['key'] = list[index]# 不推薦的寫法 dict ['key'] = list [index] # 正確的寫法 x = 1 y = 2 long_variable = 3# 不推薦的寫法 x = 1 y = 2 long_variable = 3
  • 換行

Python 支持括號內的換行。這時有兩種情況

1) 第二行縮進到括號的起始處

foo = long_function_name(var_one, var_two,var_three, var_four)

2) 第二行縮進 4 個空格,適用于起始括號就換行的情形

def long_function_name(var_one, var_two, var_three,var_four):print(var_one)

使用反斜杠\換行,二元運算符+ .等應出現在行末;長字符串也可以用此法換行

session.query(MyTable).\filter_by(id=1).\one()print 'Hello, '\'%s %s!' %\('Harry', 'Potter')

禁止復合語句,即一行中包含多個語句:

# 正確的寫法 do_first() do_second() do_third()# 不推薦的寫法 do_first();do_second();do_third();

if/for/while一定要換行

# 正確的寫法 if foo == 'blah':do_blah_thing()# 不推薦的寫法 if foo == 'blah': do_blash_thing()
  • docstring

docstring 的規范中最其本的兩點:

  • 所有的公共模塊、函數、類、方法,都應該寫 docstring 。私有方法不一定需要,但應該在 def 后提供一個塊注釋來說明。
  • docstring 的結束"""應該獨占一行,除非此 docstring 只有一行。
"""Return a foobar Optional plotz says to frobnicate the bizbaz first. """"""Oneline docstring"""

注釋

塊注釋

# 塊注釋 # 塊注釋 # # 塊注釋 # 塊注釋

行注釋

# 正確的寫法 x = x + 1 # 邊框加粗一個像素# 不推薦的寫法(無意義的注釋) x = x + 1 # x加1

建議

  • 在代碼的關鍵部分(或比較復雜的地方), 能寫注釋的要盡量寫注釋
  • 比較重要的注釋段, 使用多個等號隔開, 可以更加醒目, 突出重要性
app = create_app(name, options)# ===================================== # 請勿在此處添加 get post等app路由行為 !!! # =====================================if __name__ == '__main__':app.run()

文檔注釋(Docstring)

作為文檔的Docstring一般出現在模塊頭部、函數和類的頭部,這樣在python中可以通過對象的__doc__對象獲取文檔. 編輯器和IDE也可以根據Docstring給出自動提示.

文檔注釋以 """ 開頭和結尾, 首行不換行, 如有多行, 末行必需換行, 以下是Google的docstring風格示例

# -*- coding: utf-8 -*- """Example docstrings.This module demonstrates documentation as specified by the `Google Python Style Guide`_. Docstrings may extend over multiple lines. Sections are created with a section header and a colon followed by a block of indented text.Example:Examples can be given using either the ``Example`` or ``Examples``sections. Sections support any reStructuredText formatting, includingliteral blocks::$ python example_google.pySection breaks are created by resuming unindented text. Section breaks are also implicitly created anytime a new section starts. """

不要在文檔注釋復制函數定義原型, 而是具體描述其具體內容, 解釋具體參數和返回值等

# 不推薦的寫法(不要寫函數原型等廢話) def function(a, b):"""function(a, b) -> list"""... ...# 正確的寫法 def function(a, b):"""計算并返回a到b范圍內數據的平均值"""... ...

對函數參數、返回值等的說明采用numpy標準, 如下所示

def func(arg1, arg2):"""在這里寫函數的一句話總結(如: 計算平均值).這里是具體描述.參數----------arg1 : intarg1的具體描述arg2 : intarg2的具體描述返回值-------int返回值的具體描述參看--------otherfunc : 其它關聯函數等...示例--------示例使用doctest格式, 在`>>>`后的代碼可以被文檔測試工具作為測試用例自動運行>>> a=[1,2,3]>>> print [x + 3 for x in a][4, 5, 6]"""

文檔注釋不限于中英文, 但不要中英文混用

文檔注釋不是越長越好, 通常一兩句話能把情況說清楚即可

模塊、公有類、公有方法, 能寫文檔注釋的, 應該盡量寫文檔注釋

命名規范

模塊

模塊盡量使用小寫命名,首字母保持小寫,盡量不要用下劃線(除非多個單詞,且數量不多的情況)

# 正確的模塊名 import decoder import html_parser# 不推薦的模塊名 import Decoder

類名

類名使用駝峰(CamelCase)命名風格,首字母大寫,私有類可用一個下劃線開頭

class Farm():passclass AnimalFarm(Farm):passclass _PrivateFarm(Farm):pass

將相關的類和頂級函數放在同一個模塊里. 不像Java, 沒必要限制一個類一個模塊.

函數

函數名一律小寫,如有多個單詞,用下劃線隔開

def run():passdef run_with_env():pass

私有函數在函數前加一個下劃線_

class Person():def _private_func():pass

變量名

變量名盡量小寫, 如有多個單詞,用下劃線隔開

if __name__ == '__main__':count = 0school_name = ''

常量

常量采用全大寫,如有多個單詞,使用下劃線隔開

MAX_CLIENT = 100 MAX_CONNECTION = 1000 CONNECTION_TIMEOUT = 600MAX_OVERFLOW = 100Class FooBar:def foo_bar(self, print_):print(print_)

相關參考

草根學Python

轉載于:https://www.cnblogs.com/hippieZhou/p/9990133.html

總結

以上是生活随笔為你收集整理的Python3 系列之 编程规范篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。