亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: import module和from module import ... 的區(qū)別。 [打印本頁(yè)]

作者: listen1001    時(shí)間: 2009-09-05 23:16
標(biāo)題: import module和from module import ... 的區(qū)別。
新學(xué)python,遇到了一個(gè)很疑惑的地方
有一個(gè)自定的module a.py

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)避免名字沖突!

如果是多人合作的軟件,怪貓建議盡量還是用import module,判定一個(gè)的函數(shù)或?qū)傩允菑哪膩?lái)的會(huì)一目了然,會(huì)避免很多麻煩。
作者: sandermansxj    時(shí)間: 2009-09-08 10:40
這個(gè)問(wèn)題以前我也困惑過(guò),現(xiàn)在有點(diǎn)明白了,呵呵
作者: shadowkimi    時(shí)間: 2014-04-03 17:27
我也是新手,今天遇到了同樣的問(wèn)題。個(gè)人認(rèn)為這是因?yàn)閟how()函數(shù)的調(diào)用會(huì)返回到show()函數(shù)所在的命名空間(也就是module a)中去,從而在show()函數(shù)中訪問(wèn)的是module a命名空間中的foo變量。




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2