ホームページ  >  記事  >  バックエンド開発  >  Pythonプログラミング仕様

Pythonプログラミング仕様

高洛峰
高洛峰オリジナル
2016-11-22 16:35:431003ブラウズ

適切な空白行は、コードの可読性を高めるのに役立ちます。空白行を追加する場合は、次のガイドラインを参照してください。

1) クラスと関数の定義の間に空白行を追加します。

2) 異なるインポート モジュール間に空白行を追加します。タイプ 空白行を追加します

3) 関数内の論理段落の間に空白行を追加します。つまり、段落を区切る空白行を使用して、関連するコードをまとめて記述します。はすでに 256 列を超える文字を 1 つの画面に表示できますが、この仕様は、最大行長が 80 文字を超えてはならないという標準に準拠しています。長い行を折りたたむ方法はいくつかあります:

1) 長い変数名を次のような短い名前に変更します:

this.is.a.very.long.variable_name = this.is.another.long.variable_name

次のように変更する必要があります:

variable_name1 = this.is.a.very.long.variable_name
variable_name2 = this.is.another.variable_name
variable_name1 = variable_name2s

2) Python は括弧、角括弧、中括弧をラップします。行は暗黙的に連結されるため、この機能を利用できます。必要に応じて、式の周囲に括弧を追加できます

3) 長い行に行継続文字を追加して改行を強制します。改行の位置は演算子の前にある必要があり、メンテナンスを容易にするため、改行の後に追加のインデントを追加します。コードを見ると、次のようなコード行の先頭で改行があることがわかります。

if color == WHITE or color == BLACK \
    or color == BLUE: # 注意 or 操作符在新行的行首而不是旧行的行尾
do_something(color);

> 1) 避ける+ および += 演算子を使用してループ内の文字列を蓄積します。文字列は不変であるため、これを行うと不要な一時オブジェクトが作成され、実行時間は線形ではなく二次になります。別の方法として、各部分文字列をリストに追加し、ループの終了後に .join を使用してリストを結合することもできます。 (各部分文字列を cStringIO.StringIO キャッシュに書き込むこともできます)

2) 複数行の文字列には、三重一重引用符の代わりに三重二重引用符を使用します。ただし、複数行の文字列はプログラムの他の部分のインデントと矛盾するため、暗黙的な行連結を使用する方がクリーンな場合が多いことに注意してください。

> 命名

一貫した命名により開発者の多くの手間が軽減され、適切な命名によりコードの可読性が大幅に向上し、メンテナンスコストが削減されます。

>> 定数名はすべて大文字で、

WHITE = 0XFFFFFF
THIS_IS_A_CONSTANT = 1

>> のように各単語がアンダースコアで結ばれます。 変数

は、

color = WHITE
this_is_a_variable = 1
のように各単語がアンダースコアで結ばれます。

プライベート クラス メンバー より多くのパブリック メンバーとより少ないプライベート メンバーを識別するには、単一のアンダースコア接頭辞を使用します。

Python は動的に型指定される言語であるため、変数名に型情報を含めるべきではありません。 iValue、names_list、dict_obj などはすべて不適切な名前です。

>> 関数

関数名の命名規則は変数名と同じです。

>> クラス

クラス名には大文字で始まる単語 (CapWords、Pascal スタイルなど) を使用し、単語を接続するのにアンダースコアを使用しないでください。例:

class ThisIsAClass(object):pass

>> モジュール

モジュール名はすべて小文字です。 パッケージで使用されるモジュールの場合は、

module.py_
internal_module.py

>> のようなアンダースコア接頭辞を追加できます。 パッケージの命名規則は次のとおりです。モジュールと同じです。

>> 略語

では、名前を付けるときに完全に綴られた単語を使用する必要があります。

1) XML、ID などの一般的に使用される略語は、最初の文字のみを大文字にする必要があります。

class XmlParser(object):pass

などの名前付け。 2) 名前に長い単語が含まれる場合は、特定の単語を省略します。このとき、母音を削除する、子音を含む最初の文字を削除するなど、合意された省略方法として使用する必要があります。 例:

関数は FN と省略されます

テキストは TXT と省略されます

オブジェクト

数値はnumなどと略されます。

>> 固有の命名方法

とは、主に__xxx__形式のシステム予約語の命名方法を指します。この種の名前付けはプロジェクトでも使用できます。その重要な点は、この形式の変数は読み取り専用であり、この形式のクラス メンバー関数はできる限りオーバーロードすべきではないということです。

class Base(object):
    def __init__(self, id, parent =None):
        self.__id__ = id
        self.__parent__ = parent    def __message__(self, msgid):
        # …略

のように、__id__、__parent__、__message__ はすべてシステムの予約語命名法を使用します。

>> インポート形式

1) インポートの順序は、最初に Python 組み込みモジュールをインポートし、次にサードパーティのモジュールをインポートし、最後に独自開発プロジェクトの他のモジュールをインポートします。これらのモジュールは空白行で区切られます。 。

2) 各インポートは独自の行にある必要があります。

3) インポート定数定義モジュールまたは名前空間の競合がないことが保証される他のモジュールでない限り、from module import * を使用しないでください。

> 割り当て

割り当て言語の場合、主なことは、

などの不必要な位置合わせを行わないことです。
a            = 1                               # 这是一个行注释
variable = 2                               # 另一个行注释
fn           = callback_function    # 还是行注释

没有必要做这种对齐,原因有两点:一是这种对齐会打乱编程时的注意力,大脑要同时处理两件事(编程和对齐);二是以后阅读和维护都很困难,因为人眼的横向视野很窄,把三个字段看成一行很困难,而且维护时要增加一个更长的变量名也会破坏对齐。直接这样写为佳:

a = 1 # 这是一个行注释
variable = 2 # 另一个行注释
fn = callback_function # 还是行注释

>  语句

通常每个语句应该独占一行。不过, 如果测试结果与测试语句在一行放得下, 你也可以将它们放在同一行。如果是if语句, 只有在没有else时才能这样做。特别地,绝不要对 try/except 这样做,因为try和except不能放在同一行。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。