part5_chapter23_module code basic pytho學習手冊筆記

part5_chapter23_module code basic

一個意外發現

書中原例

#f.py
print("hello");
x = 1;
y = [4,5];

>>> from f import x,y
hello
>>> x =10
>>> y[0]=99
>>> import f
>>> f.x
1
>>> f.y
[99, 5]

把兩個兩個import對調

>>> import f
hello
>>> f.x =10
>>> f.y[0]=99
>>> from f import x,y
>>> x           ##這裏的x, y 不是原來的f.py 而是上一個對象
10
>>> y
[99, 5]
>>> f.x=11
>>> f.y[1]=999
>>> x
10
>>> y
[99, 999]

爲什麼會這樣呢?from只是把名稱從一個模塊複製到另一個模塊,from module import name1,name2 可以等價以下形式

import module
name1 = module.name1;
name2 = module.name2; 

如果這麼理解,那第一種方式就解釋不通了。????
等有空得看下源碼才知道了。

question

怎麼創建模塊?

一個文件即是一個模塊,這個文件後綴是py, 文件名不能用保留字(for, if import。。。)

from 和import語句有什麼關係?

from是導入整個模塊,和import一樣,但from會多做一步,從被導入的模塊中複製一個或者多個屬性到from所在的作用域。

reload和導入有什麼關係?

reload是把之前導入的對象進行重新賦值。

在什麼情況下必須用import,而不是 from?

當導入的模塊中有同名屬性時,只能用import

from語句的三種陷阱?

1 導入多個模塊,同名時,後者會覆蓋前者;
2 導入多個模塊時,根據屬性名,無法直觀知道這是哪個模塊屬性;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章