我是Python新手。我正在開發一個小項目。我需要遵循從病房入手的編碼標準。如何以正確的方式使用import
聲明。現在我正在使用Python 2.7。如果我轉向3.x,是否存在與絕對進口產品的衝突?絕對進口和相對進口有什麼區別?python中的絕對導入是什麼?
回答
這裏繪製的absolute
和relative
之間的區別與我們討論絕對和相對文件路徑甚至URL的方式非常相似。
絕對{進口,路徑,URL}告訴你究竟通常如何通過指定每一個部分,讓你在以後的事:
import os, sys
from datetime import datetime
from my_package.module import some_function
相對{進口,路徑,網址}是完全他們說他們是:他們相對到他們當前的位置。也就是說,如果目錄結構發生變化或文件移動,這些可能會中斷(因爲它們不再是指同一事物)。
from .module_in_same_dir import some_function
from ..module_in_parent_dir import other_function
因此,對於將被共享的代碼,首選絕對導入。
有人問我,在註釋中提供如何from __future__ import absolute_import
關係到這一點,它是怎樣來使用的例子。在試圖制定這個例子時,我意識到我無法完全解釋它的行爲,所以我asked a new question。 This answer給出了一個代碼示例,顯示from __future__ import absolute_import
的正確工作實現,它實際上解決了歧義。
The accepted answer更詳細地介紹了它爲什麼會如此工作,包括討論Python 2.5更改日誌中令人困惑的措辭。本質上,這個指令的範圍(以及Python的絕對導入和相對導入的區別)非常非常狹窄。如果您發現自己需要這些區別來使代碼正常工作,那麼如果可能的話,您最好重新命名本地模塊。
這就是我的想法。但是,如果是這樣的話,爲什麼當我從'__future__ import(absolute_import)'有''的時候,後一種形式的導入仍然有效? – orome
@raxacoricofallapatorius假設你有一個名爲'string'的本地模塊。你打開一個解釋器併發出'import string'。 Python 2.5會給你本地模塊。 Python 2.7+會給你[string](https://docs.python.org/2/library/string.html)庫。未來的指令將Python 2.5轉換爲2.7的默認行爲。虛線形式是明確相對的,因此標準庫不存在模糊性。因此,他們總是工作一樣。 [更多](https://docs.python.org/2.5/whatsnew/pep-328.html) –
啊我看到'from __future__ absolute_import'禁止*隱式*相對導入(顯式的很好)。正確? – orome
- 1. 爲什麼這種絕對導入在Python中不起作用?
- 2. 什麼是Python中的同胞導入?
- 3. 什麼是。在Python中的導入語句是什麼意思?
- 4. 在Python中導入是什麼。意思?
- 5. python:在相對導入中不允許*的原因是什麼?
- 6. Python相對/絕對導入(再次)
- 7. python函數的絕對導入
- 8. 模塊Python的絕對導入失敗
- 9. OSX上的Python絕對導入
- 10. 導入maxint是做什麼的? python 2.7
- 11. 在python絕對導入不工作,相對導入工作
- 12. python:在python導入中使用()的目的是什麼?
- 13. 在打字稿中導入模塊時,絕對路徑的根源是什麼?
- 14. python絕對導入子模塊失敗
- 15. python什麼是線程導入?
- 16. 將R對象導入Python的最佳方法是什麼?
- 17. 強制Python導入是絕對的(忽略本地包目錄)
- 18. 什麼時候Python導入?
- 19. 什麼是相對和絕對期限?
- 20. 使用Webpack 2進行絕對導入的最佳方式是什麼?
- 21. 什麼是絕對URL的定義
- 22. Python中的導入函數的結構是什麼?
- 23. 爲什麼不在Python中導入A.B?
- 24. 爲什麼只在Python中導入類?
- 25. TypeScript - 什麼是'導入導入'?
- 26. 「導入*」導入到底是什麼?
- 27. Python/Django導入錯誤的模塊(相對應該是絕對的)
- 28. python彙編文件在導入中的優先級是什麼?
- 29. 在Python中導入模塊的所有方法是什麼?
- 30. Python中導入模塊的最pythonic方式是什麼
您能否澄清一下絕對和相對進口是什麼? –
@ Ol'Reliable它們在[PEP 328](http://legacy.python.org/dev/peps/pep-0328/)中有描述。 –