2016-08-19 4 views
14

定義:http://www.urbandictionary.com/define.php?term=Dunderコーディングスタイル(PEP8) - モジュールレベル "dunders" "Dunder"(<strong>D</strong> ouble <strong>スコア</strong>下)の


私は、モジュールレベルの配置に従って、疑問を持っていますPythonコードで "ダンサー"(__all____version____author__など)。

PEP8を読み、thisを参照している間に質問が出てきました。Stack Overflow question。

受け入れ答えはこう述べています。

__author__は、グローバルな「変数」であるため、輸入の下に表示されます。

しかしPEP8セクションModule level dunder namesに私は、次をお読みください。

モジュールレベル "dundersは" など__all____author____version__、など(2が先頭と2は アンダースコアを末尾に持つすなわち名) は、モジュールdocstringの後に、インポート文の前に置かなければなりません __future__からインポートを除く。 Pythonでは、future-imports は、docstrings以外の他のコードの前にモジュール内に現れなければならないことを要求しています。

"""This is the example module. 

This module does stuff. 
""" 

from __future__ import barry_as_FLUFL 

__all__ = ['a', 'b', 'c'] 
__version__ = '0.1' 
__author__ = 'Cardinal Biggles' 

import os 
import sys 

しかし、私はPyCharmに上記置いたとき、私は(もスクリーンショットを参照)、この警告を参照してください:

著者らはまた、コード例を与える

PEP8:モジュールをファイルの先頭にないレベルのインポート

PyCharm ignoring PEP8?

質問:これらの変数をダブルアンダースコアで保存する正しい方法は何ですか?

+2

PEP 8は、生きている文書です。それは前に被験者に*沈黙していた可能性があることを考慮してください。 –

+0

@MartijnPieters - セクションが追加/変更されたときに見えることはありますか? – linusg

答えて

16

最近PEP 8がに更新されました。インポートの前に場所を入れてに更新しました。 6月7日、2016年にコミットし、revision cf8e888b9555を参照してください:

__all__場所をリラックス。

すべてのモジュールレベルのダンダーを同じ場所に配置し、冗長バージョンの簿記情報 を削除します。

クローズ#27187。パッチイアンリー。

テキストはfrom __future__ import ...警告に対処するためにfurther updated the next dayました。

issue #27187へのパッチのリンクは、this pycodestyle issueを参照し、PEP 8が不明であったことが判明しました。

モジュールレベルのダンダーグローバルについての明確なガイドラインがなかったので、PyCharmと他の答えは時にはでした。 PyCharmがPEP 8のチェックをどのように実装しているのかよく分かりません。彼らがpycodestyle project(デファクトPythonスタイルのチェッカー)を使用している場合、私はそれが自動的に修正されると確信しています。それ以外の場合は、バグを報告して修正してください。

+0

すごい、とても速くてクリアです。 9時にこの答えを受け入れますか(なぜそうですか?)分: 誰かがこの変更に気づき、次回にPEP8チェッカーの動作を更新しますか? – linusg

+0

@linusg:pycodestyleプロジェクトで問題が発生したため、更新されると確信しています。 PyCharmでバグを修正したい場合は、PyCharmでバグを報告してください。 –

+0

次回は、PyCharmでPEP8のチェックがどのように行われているのかを調べ、最終的にバグを報告します。私はその後私の質問を編集します。 – linusg

関連する問題