2014-06-28 88 views
3

我一直在通過Learn Python The Hard Way作爲一種進修。然而,我沒有命名每個例子ex#.py(其中#是練習的編號),我只是稱它們爲#.py。這工作得很好,直到我得到Exercise 25,這需要你導入你剛通過解釋器創建的模塊。當我嘗試這會發生以下情況:命名python模塊有什麼要求?

>>> import 25 
    File "<stdin>", line 1 
    import 25 
      ^

SyntaxError: invalid syntax 

我試過重命名爲ex25.py文件,並將它然後發揮預期(>>>進口EX25)。我想知道的是什麼是python模塊的命名要求?我看了一下官方文檔here,但沒有看到它提到任何限制。

編輯:iCodez,Pavel和BrenBarn提供的所有三個答案都給出了很好的資源,並有助於回答這個問題的不同方面。我最終選擇了iCodez的答案作爲正確的答案,因爲這是第一個答案。

回答

5

使用import statement導入的模塊必須遵循爲變量名稱(標識符)設置的相同命名規則。具體而言,它們必須以字母或下劃線開始,然後完全由字母,數字和/或下劃線組成。

您還可能有興趣在什麼PEP 8,官方的風格指南Python代碼,不得不說的模塊名稱:

模塊應該是短期的,全小寫的名字。如果提高可讀性,則可以在模塊名稱中使用下劃線 。 Python程序包 也應該有簡短的全小寫名稱,儘管使用 下劃線是不鼓勵的。


字母是ASCII字符A-Za-z
數字是ASCII字符0-9

3

嚴格來說,你可以命名一個Python文件任何你想要的。但是,爲了使用import語句將其導入,文件名必須是有效的Python標識符 - 您可以將其用作變量名稱。這意味着它只能使用字母數字和下劃線,而不能以數字開頭。這是因爲import語句的grammar要求模塊名稱是一個標識符。

這就是爲什麼你沒有看到問題,直到你需要進行練習。您可以從命令行運行一個帶有數字名稱的Python腳本,其中python 123.py,但您將無法導入該模塊。

4

什麼允許是有效的標識符(變量,模塊名稱等)都可以在這裏找到明確的規則:https://docs.python.org/dev/reference/lexical_analysis.html#identifiers

在你的情況,這是相關的句子:

在ASCII範圍內(U + 0001 ..U + 007F),標識符的有效字符與Python 2.x中的相同:大寫和小寫字母A到Z,下劃線_和,第一個字符除外,數字0到9.