Python中是否需要避免使用相對引用?

如題,比如 Django、Tornado中就使用了相對引用


你說的是避免 from import * 吧


應該提倡使用相對import。


django中如果引用另外一個model,可以使用帶引號的標註方式來避免交叉import

app_name.model_name

url里也可以用這種標註方式來標註view function


「都說」?我沒有聽過這種說法,請給出出處。

有關Python編程風格的問題,最「權威」的參考應該是PEP8,而PEP8並沒有反對這種import的「風格」(from ... import ... 與 import ... 是兩種不同的機制)。


題主所說的,應該是類似

from ..package1 import module1

這種導入父層包中對象的問題吧,雖然我也不知道應不應該用,但其他答案好像都理解錯意思了。


為了避免命名空間裡面的名字有衝突才會這樣做吧。


是誰這麼說的?

這都不讓寫,那還如何寫導入...


我猜你說的是這種:

import foo
from foo import bar

這麼做是為了防止與 PYTHONPATH 中的模塊衝突,如果用相對引入,可能不知道 foo 到底是項目里的,還是python lib 里的。

可以這樣寫:

from . import foo


避免修改 import 進來的內容(尤其是修改全局變數),試試就知道了

避免 from foo import *

避免引入看起來像本地內容的東西,如 from foo import init (當然,編寫foo的時候就應該避免這種名字)


推薦閱讀:

TAG:Python | Python框架 | Python入門 |