2011-02-26 80 views

回答

31

如果import somemodule所包含的全局變量將通過somemodule.someglobal提供。如果你from somemodule import *所有的全局變量(或者在__all__中列出的全局變量)都將變爲全局變量,也就是說,你可以使用someglobal來訪問它們,前面沒有模塊名稱。

不鼓勵使用from module import *,因爲它會混淆全局範圍,如果從多個模塊導入東西,可能會發生衝突並覆蓋現有的類/函數。

0

與許多常見問題解答常見問題的答案...這裏是一個:http://effbot.org/zone/import-confusion.htm

本質上回答您的具體問題的第二種形式(from modx import *)你只能在鏌鋣公共物品

15

如果a定義a.ba.c ...

import a 
a.b() 
a.c() 

from a import b 
b() 
c() # fails because c isn't imported 

from a import * 
b() 
c() 

注意from foo import *一般是令人難以接受的,因爲:

  1. 它把東西放到全局命名空間,而不給你很好的控制
  2. 它可能導致衝突,由於一切在全局命名空間是
  3. 這使得它目前還不清楚什麼是在當前文件實際上定義,因爲它定義的列表可能會根據導入的內容而有所不同。
相關問題