web-dev-qa-db-ja.com

python:2ワードの名前を持つモジュールに名前を付ける

私は、1つの.pyソースファイルを含む本当にシンプルなモジュールを作成しようとしていますが、すでに障害に直面しています。 scons-configと呼びますが、import scons-configはPythonでは機能しません。私は this SO question を見つけ、 PEP8スタイルガイド を見ましたが、ちょっと戸惑っています。2ワードについては話していない-命名規則。

これに対処する正しい方法は何ですか?

  • モジュール名:SconsConfig? scons_config? sconsconfig? scons.config?
  • その中の単一の.pyファイルの名前:scons-config.py? scons_config.py?

edit:「アンダースコアの使用はお勧めできません」と表示され、行き詰まりました。「sconsconfig」または「scons_config」を使用する必要があります(私は他のものが出ていると思います)?

63
Jason S

必要な場合は、常にアンダースコアを使用してください_

ドットを使用する.は機能しません。

from scons.config import whatever

壊れるだろう。

しかし PEP 8 はそれを明確に説明しています:

パッケージ名とモジュール名

モジュールには、短い、すべて小文字の名前が必要です。 アンダースコアは、モジュール名で使用できます場合は可読性が向上します。 Pythonpackagesも、すべて小文字の短い名前にする必要がありますが、アンダースコアのの使用は推奨されません

UPDATE:

質問を直接ターゲットにするには:sconsconfigで十分だと思います。長すぎず、読みやすいです。

しかし、正直なところ、アンダースコアを使用してコードを実行しても、誰もあなたを責めるとは思いません。 thatもう気にしない特定のレベルが常にあります。

73
Felix Kling

まず、モジュール名は単一の.pyファイルの名前と同じです。 Pythonで言えば、いくつかの.pyファイルのコレクションはパッケージです。

PEP-8は、パッケージ名をアンダースコアで分割することを推奨していません。私のsite-packagesディレクトリのピークは、マルチワード名が通常一緒に実行されることを示しています(例:setuptools、sqlalchemy)

モジュール名(つまり、ファイル名)はアンダースコアによって分割される場合があります(そして、私は通常、これを実行します。

小文字のみを使用してください(PEP-8に準拠)。これにより、大文字と小文字を区別するファイルシステムから大文字と小文字を区別しないファイルシステムに移行するときの問題を回避できます。

16
Dan Menes

PEP-8とは別に、ネイティブのPythonモジュールがこの問題をどのように処理するかを確認することもできます。

Python 2 のネイティブモジュールと Python のネイティブモジュール)を比較する場合、公式開発者の新しい傾向は、大文字と下線を避けることであることがわかります。たとえば、ConfigParser in Python 2はconfigparser in Python 3。

これを見て、アクションの最良のコースは、大文字とアンダースコアを避けて、単語を一緒に結合することです。つまり、sconsconfig

7
osolmaz

-は禁止です。記号はマイナス演算子に使用されます。ほとんどのプログラミング言語でも同じことが言えます。使用する _またはそれ以外はまったくありません。

2
Wai Yip Tung