基本上當我有一個Python文件,如:試圖導入它們時,在Python文件中使用破折號是否可以?
python-code.py
及用途:
import (python-code)
解釋給我語法錯誤。
關於如何解決它的任何想法?破折號在Python文件名中是非法的嗎?
基本上當我有一個Python文件,如:試圖導入它們時,在Python文件中使用破折號是否可以?
python-code.py
及用途:
import (python-code)
解釋給我語法錯誤。
關於如何解決它的任何想法?破折號在Python文件名中是非法的嗎?
你應該檢查PEP 8,樣式指南Python代碼:
封裝和模塊名模塊應該是短期的,全小寫的名字。如果提高可讀性,則可以在模塊名稱中使用下劃線。儘管不建議使用下劃線,Python包也應該有簡短的全小寫名稱。
由於模塊名稱映射到文件名,並且某些文件系統不區分大小寫並截斷長名稱,所以重要的是選擇模塊名稱的時間相當短 - 在Unix上這不會成爲問題,但是代碼傳輸到較舊的Mac或Windows版本或DOS時可能會出現問題。
換句話說:重命名文件:
問題是python-code
不是標識符。解析器將此視爲python
減去code
。當然,這不會做你所問的。您將需要使用一個也是有效的Python標識符的文件名。嘗試用下劃線替換-
。
+1。從來沒有想過Python源代碼的文件名應該是一個有效的標識符,原因**文件名**將用於引用模塊對象。 – andy 2015-04-16 01:51:07
你也許可以導入它通過一些黑客__import__
,但如果你已經不知道怎麼了,你不應該。 Python模塊名稱應該是有效的變量名稱(「標識符」) - 這意味着如果你有一個模塊foo_bar
,你可以在Python中使用它(print foo_bar
)。你不能用一個奇怪的名字(print foo-bar
- >語法錯誤)這樣做。
在代碼中要注意的另一件事是導入不是函數。所以import(python-code)
應該是import python-code
,正如一些人已經提到的那樣,它被解釋爲「import python minus code」,而不是你想要的。如果你真的需要導入的文件,在其名稱中的破折號,你可以做以下::
python_code = __import__('python-code')
但是,也如上文提到的,這是不是真的建議。你應該改變文件名,如果它是你控制的東西。
TLDR
破折號不非法的,但你不應該使用他們的3個原因:
如果你一定要導入的文件名以短劃線特殊的語法是這樣的:
module_name = __import__('module-name')
好奇,爲什麼我們需要特殊的語法?
的原因特殊語法的是,當你寫import somename
你創建與標識符somename
(所以你可以稍後例如somename.funcname
使用它)的模塊對象。當然module-name
不是一個有效的標識符,因此是一個有效的特殊語法。
你不明白爲什麼模塊名稱不是有效的標識符?
別擔心 - 我也沒有。這裏有一個提示可以幫助你:看看這條python行:x=var1-var2
。你是否看到作業右側的減法或帶有短劃線的變量名?
PS
沒有原來在我的答案,除了包括什麼,我認爲是所有其他的答案信息最相關的位在同一個地方
這個問題與風格無關,它是一個_syntax_ _error_ – hop 2009-04-19 00:09:34
如下圖所示,可能仍然有一個帶有這個名字的文件,所以風格指南非常相關。 – 2012-11-19 22:08:53