Python中是否需要避免使用相對引用?
02-05
如題,比如 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的時候就應該避免這種名字)
推薦閱讀: