Pythonプログラミングコード仕様(Google Style)
6864 ワード
原文:https://www.jianshu.com/p/8b6c425b65a6
プログラミングの過程で、関数の命名、変数の命名、コードの注釈など、一定の規則に従わなければならない.従わなくてもコードを成功させることができるが、優秀できれいなコードは必ず暗黙的ないくつかの規則に従う.そうすれば、他の人が読むのも楽になる.そうしないと、将来自分でも分からない.問題をタイムリーに発見するために、pythonのIDLEを使用して作成することができます.pycharmなどのツールはPEP 8ルールに従い、コードに存在する問題を自動的に発見し、提示します.
この文書の目次は次のとおりです.
目次
一、簡明な概要
1エンコーディング
2コードフォーマット
2.1インデント
2.2行幅
2.3引用符
2.4空白行
3 import文
4スペース
5改行
二注釈
1ファイルコメント
2つのコメント
3行コメント
4 Docstring
三命名規範
1モジュール
2クラス名
3関数
4変数名
5定数
一、簡明な概要
1エンコーディング特別な事情がなければ、ファイルはUTF-8コードを使用する 特別な事情がなければ、ファイルヘッダにpython翻訳機の位置情報を入れる必要がある
2コードフォーマット
2.1インデント4つのスペースを一括してインデント 2.2行幅
1行あたりのコードは80文字を超えないようにします(特殊な場合はわずかに80を超えることができますが、最長120を超えてはいけません).理由:side-by-sideのdiffを見るときに役立つ コンソールの下でコードを確認しやすい 長すぎるのは設計に欠陥がある可能性がある 2.3引用符自然言語は二重引用符 マシンIDは一重引用符で 正規表現原生の二重引用符を使う 文書文字列(docstring)三重引用符を使用 2.4空白行上位定義の間に2行空けてある、例えば関数またはクラス定義 メソッド定義、クラス定義と最初のメソッドの間には、いずれも1行空けるべき 複数の空行で複数の関連関数を区切ることができる 関数では空行で論理関係のコードを区切ることができる 3 import文import文は行で書くべき import文absolute importを使うべき import文はファイルヘッダに、モジュールの説明とdocstringの後、グローバル変数の前に置くべきである. import文は順番に並べて、グループごとに1行ずつ区切る 導入順はpython標準ライブラリ、サードパーティライブラリ、独自ライブラリ 他のモジュールのクラス定義をインポートする場合、相対インポートを使用可能 ネーミング競合が発生した場合はネーミングスペースが使用可能
4スペース二元演算子の両側にそれぞれ1マスずつ空いている 関数のパラメータリストで、 関数のパラメータリストで、デフォルト値等号の両側にスペースを付けない 左かっこの後、右かっこの前に余分なスペースを入れない 辞書対象の左かっこの前に余分なスペースを入れない 代入文の位置合わせに使用しない余分なスペース
5改行
Pythonは括弧内の改行をサポートします.この場合、2つの状況があります.1 2行目は括弧の先頭にインデント 2 2行目に4つのスペースをインデントし、括弧から改行する場合に適用する
スラッシュ
複合文は禁止されています.つまり、1行に複数の文が含まれています.
二注釈
1ファイルコメント
ファイルの先頭に、著作権、ライセンス宣言、作成者、日付、バージョンなどの情報を追加できます.
2つのコメント
「#」番号の後に1つ空け、段落は空白行で区切られます(同様に「#」番号が必要です)
3行コメント
少なくとも2つのスペースと文を分けて、無意味なコメントを使用しないように注意してください.コードの要所要所(または複雑な箇所)で、コメントが書けるものはなるべくコメントを書く 比較的重要な注釈セグメントは、複数の等号で区切られており、より目立つように重要性が強調されている
4 Docstring
ドキュメントとしてDocstringは、pythonでオブジェクトの__を通過できるように、モジュールヘッダ、関数、クラスヘッダに一般的に表示されます.doc__オブジェクトはドキュメントを取得します.簡単に言えば、モジュール、関数、クラス、メソッドに現れる最初の文はdocstringで、自動的に属性__になります.doc__,たとえば
foo._doc__"This is function foo".Docstringは「」で「先頭と末尾、先頭は改行せず、複数行ある場合は末行は改行しなければならない.以下はGoogleのdocstringスタイルの例
三命名規範
1モジュールモジュールはなるべく小文字で命名し、頭文字は小文字のままにし、下線はなるべく使わない(複数単語で数が少ない場合を除く)
2クラス名クラス名はキャメルCaseのネーミングスタイル、頭文字は大文字、プライベートクラスは下線で始まる 関連するクラスと上位関数を同一のモジュールに入れる.Javaのように、クラスやモジュールを制限する必要はありません.
3関数関数名はすべて小文字で、複数の単語があれば下線で区切る プライベート関数は、関数の前に下線を引く_
4変数名変数名はなるべく小文字にし、複数の単語があれば下線で区切る
5定数定数は全大文字、複数の単語がある場合は下線で区切る
プログラミングの過程で、関数の命名、変数の命名、コードの注釈など、一定の規則に従わなければならない.従わなくてもコードを成功させることができるが、優秀できれいなコードは必ず暗黙的ないくつかの規則に従う.そうすれば、他の人が読むのも楽になる.そうしないと、将来自分でも分からない.問題をタイムリーに発見するために、pythonのIDLEを使用して作成することができます.pycharmなどのツールはPEP 8ルールに従い、コードに存在する問題を自動的に発見し、提示します.
この文書の目次は次のとおりです.
目次
一、簡明な概要
1エンコーディング
2コードフォーマット
2.1インデント
2.2行幅
2.3引用符
2.4空白行
3 import文
4スペース
5改行
二注釈
1ファイルコメント
2つのコメント
3行コメント
4 Docstring
三命名規範
1モジュール
2クラス名
3関数
4変数名
5定数
一、簡明な概要
1エンコーディング
# -*- coding: utf-8 -*-
#! /usr/bin/env python3
2コードフォーマット
2.1インデント
1行あたりのコードは80文字を超えないようにします(特殊な場合はわずかに80を超えることができますが、最長120を超えてはいけません).理由:
"...",
例えばエラーメッセージ;多くの場合unicode、使用u" "
'...',
例えばdictのkeyr"..."
"""......"""
class A:
def __init__(self):
pass
def hello(self):
pass
def main():
pass
#
import os
import sys
#
import sys,os
#
from subprocess import Popen, PIPE
#
from foo.bar import Bar
#
from ..bar import Bar
import os
import sys
import msgpack
import zmq
import foo
from myclass import MyClass
import bar
import foo.bar
bar.Bar()
foo.bar.Bar()
4スペース
[=,-,+=,==,>,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
5改行
Pythonは括弧内の改行をサポートします.この場合、2つの状況があります.
foo = long_function_name(var_one, var_two,
var_three, var_four)
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')
複合文は禁止されています.つまり、1行に複数の文が含まれています.
#
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()
二注釈
1ファイルコメント
ファイルの先頭に、著作権、ライセンス宣言、作成者、日付、バージョンなどの情報を追加できます.
# **********************************************************
# * Author : xxxxxx
# * Email : [email protected]
# * Create time : 2018-04-22 19:26
# * Filename : collect-sys-msg.py
# * Description :
# **********************************************************
2つのコメント
「#」番号の後に1つ空け、段落は空白行で区切られます(同様に「#」番号が必要です)
#
#
#
#
#
3行コメント
少なくとも2つのスペースと文を分けて、無意味なコメントを使用しないように注意してください.
#
x = x + 1 #
# ( )
x = x + 1 # x 1
app = create_app(name, options)
# =====================================
# get post app !!!
# =====================================
if __name__ == '__main__':
app.run()
4 Docstring
ドキュメントとしてDocstringは、pythonでオブジェクトの__を通過できるように、モジュールヘッダ、関数、クラスヘッダに一般的に表示されます.doc__オブジェクトはドキュメントを取得します.簡単に言えば、モジュール、関数、クラス、メソッドに現れる最初の文はdocstringで、自動的に属性__になります.doc__,たとえば
def foo():
""" This is function foo"""
foo._doc__"This is function foo".
"""
This is a groups style docs.
Parameters:
param1 - this is the first param
param2 - this is a second param
Returns:
This is a description of what is returned
Raises:
KeyError - raises an exception
"""
三命名規範
1モジュール
#
import decoder
import html_parser
#
import Decoder
2クラス名
class Farm():
pass
class AnimalFarm(Farm):
pass
class _PrivateFarm(Farm):
pass
3関数
def run():
pass
def run_with_env():
pass
class Person():
def _private_func():
pass
4変数名
if __name__ == '__main__':
count = 0
school_name = ''
5定数
MAX_CLIENT = 100
MAX_CONNECTION = 1000
CONNECTION_TIMEOUT = 600