模塊導入及使用,關鍵字,模塊搜索路徑,python文件的兩種用途


06.05自我總結

一.模塊導入及使用

1.模塊導入的兩種方式

我們拿time模塊並使用其中的time功能進行舉例

a)第一種

import time
print(time.time)

import首次導入模塊發生了3件事:

  1. 打開模塊文件
  2. 執行模塊對應的文件,將執行過程中產生的名字都丟到模塊的名稱空間
  3. 在程序中會有一個模塊名稱指向模塊名稱空間(如果他是import time as f)則是f指向模塊空間
  4. 在當前執行文件中拿到一個模塊名

b)第二種

from time import time
print(time)

from...import...首次導入模塊發生了3件事:

  1. 以模塊為准創造一個模塊的名稱空間
  2. 執行模塊對應的文件,將執行過程中產生的名字都丟到模塊的名稱空間
  3. 在當前執行文件的名稱空間中拿到一個名字,該名字直接指向模塊中的某一個名字,意味着可以不用加任何前綴而直接使用
  • 優點:不用加前綴,代碼更加精簡
  • 缺點:容易與當前執行文件中名稱空間中的名字沖突

c)相同點和不同點

相同點:

  1. 兩者都會執行模塊對應的文件,兩者都會產生模塊的名稱空間
  2. 兩者調用功能時,需要跑到定義時尋找作用域關系,與調用位置無關

不同點

  1. import需要加前綴;from...import...不需要加前綴

2.關鍵字

_all_

如果一個模塊的文件內寫有_all_
import 模塊名字,默認導入所有模塊
而當模塊中出現_all_時候,他只會導入_all_后面列表內的名稱

二.模塊循環導入

1.情況

創建兩個模塊

# m1.py
print('from m1.py')
from m2 import x

y = 'm1'
# m2.py
print('from m2.py')
from m1 import y

x = 'm2'

應用程序導入模塊

# run.py
import m1

2.解決辦法

第一種

把m1中吧form m2 import x 將能找到的y放置form m2 import x,上面,讓他在沒有導入模塊的時候就發現y從而不會尋找
# m1.py
print('from m1.py')
y = 'm1'
from m2 import x

第二種

把from m2 import x 用函數把他變成局部,文件加載順序先全局在局部
def f1():
    from m2 import x
y = 'm1'
f()

三.模塊搜索路徑

去內存中找去→內置模塊中找→去環境變量中找

打印環境變量

import sys
print(sys.path)

四.python文件的兩種用途

1.模塊文件

2.運行文件

搜索路徑以運行文件為基准

五.關鍵字_name_

在執行文件中_name_會被讀取成'__main__'

在導入模塊的時候__name__會變成模塊名字


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM