foo='abc'
def show():
print 'foo from a:',foo,id(foo)
現(xiàn)在在python解釋器里
>>> import a
>>> id(a.foo)
3084447168L
>>> a.show()
foo from imptee: abc 3084447168
>>> a.foo='123'
>>> a.show()
foo from imptee: 123 3084447616
換一種方式
>>> from a import foo,show
>>> id(foo)
3084447616L
>>> show()
foo from imptee: 123 3084447616
>>> foo='aaa'
>>> show()
foo from imptee: 123 3084447616
>>> id(foo)
3084447168L
我想不明白為什么這兩種方式不同。請(qǐng)高手指點(diǎn)下。作者: 9命怪貓 時(shí)間: 2009-09-07 13:58 標(biāo)題: 嘗試著給你解釋一下: from a import foo,show
foo, show 被直接導(dǎo)入到局部名字空間去了,所以它們可以直接使用,而不需要加上模塊名的限定。對(duì)比一下兩段代碼可知
LZ可以導(dǎo)入獨(dú)立的項(xiàng)或使用 from module import * 來(lái)導(dǎo)入所有東西。
如果需要經(jīng)常訪問(wèn)模塊的屬性和方法,且不想一遍又一遍地敲入模塊名,建議使用 from module import;
如果需要有選擇地導(dǎo)入某些屬性和方法,而不想要其它的,使用 from module import;
如果模塊包含的屬性和方法與你的某個(gè)模塊同名,你必須使用 import module 來(lái)避免名字沖突!