亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

簡(jiǎn)明概述

簡(jiǎn)明概述

1、編碼

  • 如無(wú)特殊情況, 文件一律使用 UTF-8 編碼

  • 如無(wú)特殊情況, 文件頭部必須加入#-*-coding:utf-8-*-標(biāo)識(shí)

2、代碼格式

2.1、縮進(jìn)

  • 統(tǒng)一使用 4 個(gè)空格進(jìn)行縮進(jìn)

2.2、行寬

每行代碼盡量不超過(guò) 80 個(gè)字符(在特殊情況下可以略微超過(guò) 80 ,但最長(zhǎng)不得超過(guò) 120)

理由:

  • 這在查看 side-by-side 的 diff 時(shí)很有幫助

  • 方便在控制臺(tái)下查看代碼

  • 太長(zhǎng)可能是設(shè)計(jì)有缺陷

2.3、引號(hào)

簡(jiǎn)單說(shuō),自然語(yǔ)言使用雙引號(hào),機(jī)器標(biāo)示使用單引號(hào),因此 代碼里 多數(shù)應(yīng)該使用 單引號(hào)

  • 自然語(yǔ)言 使用雙引號(hào) "..."

例如錯(cuò)誤信息;很多情況還是 unicode,使用u"你好世界"

  • 機(jī)器標(biāo)識(shí) 使用單引號(hào) '...' 例如 dict 里的 key

  • 正則表達(dá)式 使用原生的雙引號(hào) r"..."

  • 文檔字符串 (docstring) 使用三個(gè)雙引號(hào) """......"""

2.4、空行

  • 模塊級(jí)函數(shù)和類定義之間空兩行;

  • 類成員函數(shù)之間空一行;

class A:
    def __init__(self):
        pass
    def hello(self):
        pass
def main():
    pass
  • 可以使用多個(gè)空行分隔多組相關(guān)的函數(shù)

  • 函數(shù)中可以使用空行分隔出邏輯相關(guān)的代碼

2.5、編碼

  • 文件使用 UTF-8 編碼

  • 文件頭部加入#-*-conding:utf-8-*-標(biāo)識(shí)

3、import 語(yǔ)句

import 語(yǔ)句應(yīng)該分行書寫

# 正確的寫法
import os
import sys
# 不推薦的寫法
import sys,os
# 正確的寫法
from subprocess import Popen, PIPE
import語(yǔ)句應(yīng)該使用 absolute import
# 正確的寫法
from foo.bar import Bar
# 不推薦的寫法
from ..bar import Bar
  • import語(yǔ)句應(yīng)該放在文件頭部,置于模塊說(shuō)明及docstring之后,于全局變量之前;

  • import語(yǔ)句應(yīng)該按照順序排列,每組之間用一個(gè)空行分隔

import os
import sys
import msgpack
import zmq
import foo
  • 導(dǎo)入其他模塊的類定義時(shí),可以使用相對(duì)導(dǎo)入

from myclass import MyClass
  • 如果發(fā)生命名沖突,則可使用命名空間

import bar
import foo.bar
bar.Bar()
foo.bar.Bar()

4、空格

  • 在二元運(yùn)算符兩邊各空一格[=,-,+=,==,>,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)
  • 函數(shù)的參數(shù)列表中,,之后要有空格

# 正確的寫法
def complex(real, imag):
    pass
# 不推薦的寫法
def complex(real,imag):
    pass
  • 函數(shù)的參數(shù)列表中,默認(rèn)值等號(hào)兩邊不要添加空格

# 正確的寫法
def complex(real, imag=0.0):
    pass
# 不推薦的寫法
def complex(real, imag = 0.0):
    pass
  • 左括號(hào)之后,右括號(hào)之前不要加多余的空格

# 正確的寫法
spam(ham[1], {eggs: 2})
# 不推薦的寫法
spam( ham[1], { eggs : 2 } )
  • 字典對(duì)象的左括號(hào)之前不要多余的空格

# 正確的寫法
dict['key'] = list[index]
# 不推薦的寫法
dict ['key'] = list [index]
  • 不要為對(duì)齊賦值語(yǔ)句而使用的額外空格

# 正確的寫法
x = 1
y = 2
long_variable = 3
# 不推薦的寫法
x             = 1
y             = 2
long_variable = 3

5、換行

Python 支持括號(hào)內(nèi)的換行。這時(shí)有兩種情況。

1.第二行縮進(jìn)到括號(hào)的起始處

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

2.第二行縮進(jìn) 4 個(gè)空格,適用于起始括號(hào)就換行的情形

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

使用反斜杠換行,二元運(yùn)算符+ .等應(yīng)出現(xiàn)在行末;長(zhǎng)字符串也可以用此法換行

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

禁止復(fù)合語(yǔ)句,即一行中包含多個(gè)語(yǔ)句:

# 正確的寫法
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()

6、docstring

docstring 的規(guī)范中最其本的兩點(diǎn):

1.所有的公共模塊、函數(shù)、類、方法,都應(yīng)該寫 docstring 。私有方法不一定需要,但應(yīng)該在 def 后提供一個(gè)塊注釋來(lái)說(shuō)明。

2.docstring 的結(jié)束"""應(yīng)該獨(dú)占一行,除非此 docstring 只有一行。

"""Return a foobar
Optional plotz says to frobnicate the bizbaz first.
"""
"""Oneline docstring"""
繼續(xù)學(xué)習(xí)
||
提交重置代碼