python入門—import ... 和from ... import...

目錄

實例

私有屬性兩種導入的區別

重新導入模塊的方法

源碼下載


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(模塊名)

下載源碼手動練習下吧:點擊下載

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