2010-05-17 60 views
45

我試圖將一個真正簡單的模塊放在一個.py源文件中,並且已經遇到了障礙。我打算將它稱爲scons-config,但import scons-config在Python中不起作用。我找到了this SO question,看着PEP8 style guide,但有點困惑,它沒有提到雙字名稱的約定。python:命名一個具有雙字名稱的模塊

解決此問題的正確方法是什麼?

  • 模塊名稱:SconsConfig? scons_config? sconsconfig? scons.config?
  • 其中的單個.py文件的名稱:scons-config.py? scons_config.py?

編輯:我確實看到了「使用下劃線是不鼓勵」,並留下了我在一個死衚衕:我應該使用「sconsconfig」或「scons_config」(我想其他的人都出來了)?

+1

一個單一的'.py'是一個模塊... – 2010-05-17 20:07:09

回答

53

如果必須,請始終使用下劃線_

使用點.甚至不工作,否則

from scons.config import whatever 

將打破。

PEP 8清楚地描述它:

包和模塊名稱

模塊應該是短,全部小寫的名字下劃線可以使用 在模塊名稱中如果它改善了可讀性。 Python 應 也有短,全小寫的名稱,雖然使用下劃線是 阻止

UPDATE:

直接定位你的問題:我想sconsconfig是罰款。它不是太長,很可讀。

但是說實話,如果你使用下劃線並且你的代碼會隨着任何一個決定運行,我不認爲有人會責怪你。總是有一定的水平,你不應該在乎了。

+3

我看到「使用下劃線是不鼓勵的」,它讓我陷入死衚衕。 – 2010-05-17 20:07:23

+7

@Jason S:好吧,如果可讀性真的受到影響或想到另一個名字,請使用它;)*僅*不鼓勵,不禁止。 – 2010-05-17 20:09:43

+2

「總是有一定的水平,你不應該那麼在意。」沒錯,但幾乎總會對這些決定產生影響,如果你是像我這樣的初學者,這是令人生畏的。謝謝! – 2010-05-17 20:16:53

2

-是不行的。該符號用於減號運算符。大多數編程語言也是如此。使用_或其他什麼都沒有。

11

首先,模塊名稱與單個.py文件的名稱相同。在Python中,多個.py文件的集合就是一個包。

PEP-8不鼓勵使用下劃線拆分軟件包名稱。我的站點包目錄中的一個快速峯值顯示多字名稱通常只是一起運行(例如,例如,setuptools,sqlalchemy)

模塊名稱(也就是文件名)可能被下劃線分開(我通常這樣做,因爲我討厭namesthatruntogethersoy可以讀取它們)。

僅支持小寫字母(根據PEP-8)。這可以避免從區分大小寫轉爲區分大小寫的文件系統時出現問題,反之亦然。

4

除了PEP-8之外,您還可以查看本地Python模塊如何處理此問題。

如果您要比較the native modules of Python 2that of Python 3,您會發現官方開發人員的新趨勢是避免大寫和下劃線。例如,ConfigParser在Python 2成爲在Python 3

configparser望着這一點,最好的行動當然是避免大寫字母,下劃線,和剛剛加入的詞放在一起,即sconsconfig