目錄
import 模塊名
模塊名.xxx = 引用
from 模塊名 import *
xxx = 拷貝 # 能修改屬性值
函數,類... : "import 模塊名" 和 "from 模塊名 import *" 都是引用
-
實例
下面看個例子
模塊一 testFromImport.py 代碼:
title = "front"
__name = "zhang san"
def run():
print(title)
模塊二 testFromImport2.py 代碼:
'''
import...
方法導入模塊會在內存中直接加載該模塊的全部屬性。
當出現多個程序導入該模塊時,會共用一個模塊,程序之間會互相影響,包括原模塊。
'''
import testFromImport
testFromImport.title="behind"
print(testFromImport.title)
#訪問私有屬性
print(testFromImport.__name)
testFromImport.run()
'''
1、語法分析:首先from A import a1 是從A模塊導入a1工具(可以是某個 函數,全局變量,類),
import A是導入整個A模塊的全部內容(包括全部的函數,全局變量,類)。
2、內存分析:from...import...會在內存中創建並加載該模塊工具的副本,當有另外一個程序導入時,
會在內存中創建另一個副本進行加載,不會共用一個副本。所以程序進行的修改不會影響到被導入的原模塊,
且不同程序之間不會互相影響
'''
# from testFromImport import *
# print(title)
# #導入模塊時,會跳過私有屬性.下面代碼回報錯
# # print(__name)
# title="behind"
# print(title)
# run()
運行結果
#注掉模塊二種的代碼片段二,運行代碼片段一的結果:
behind
zhang san
behind
#注掉模塊二種的代碼片段一,運行代碼片段二的結果:
front
behind
front
當執行from的時候會生成副本:
產生不同結果的原因,詳見代碼片段二的註釋。
-
私有屬性兩種導入的區別
模塊一種定義了一個私有屬性 __name,模塊一代碼片段1執行的時候可以訪問_name,代碼片段2若放開註釋掉的訪問私有屬性代碼會報錯,如下:
所以:
from 模塊 import * : 導入模塊時,會跳過私有屬性;
import 模塊 : 通過引用可以訪問私有屬性
-
重新導入模塊的方法
import testFromImport
import testFromImport
# 注意:import多次,只有第一次會執行;
# 或者重啓程序
#run方法能重新導入模塊
from testFromImportimport run
run(模塊名)
下載源碼手動練習下吧:點擊下載