暑假學習記錄30 標籤3
目錄:
模組介紹
模組的使用:
- 2.1 import語句
- 2.2 from-import 語句
- 其他匯入語法(as)
- 2.3 迴圈匯入問題
- 2.4 搜尋模組的路徑與優先順序
- 2.5 區分py檔案的兩種用途
- 2.6 編寫一個規範的模組
包
3.1包的介紹
3.2包的使用
一、模組介紹
1.什麼是模組?
模組是包含了一系列功能的集合體
2.模組的四種類別:
(1)、一個py檔案就可以是一個模組,檔名為m1.py,模組名為m1
( 2)、一個包含有__int__.py檔案的資料夾稱之為包,也是一種模組
(3)、已被編譯為共享庫或DLL的C或C++擴充套件(瞭解)
( 4)、使用C編寫並連結到python直譯器的內建模組(瞭解)
3.模組的3種來源:
(1)、自帶的:內建
標準庫
( 2)、第三方模組:pip3 install requests
( 3)、自定義模組
4、為何要用模組:
拿來主義,提高開發效率
解決冗餘問題,讓程式變得更加清晰,方便管理
二、模組的使用
"""
import time
print(time)
2.1import語句
2.11. import首次匯入模組發生了3件事:
(1)會觸發模組對應檔案的執行,產生一個模組的名稱空間
(2)執行模組檔案的程式碼,將執行過程中產生的名字都丟到模組的名稱空間
(3)將模組名稱空間的記憶體地址綁定當前空間中的名字spam
後續的匯入不會觸發檔案的執行,直接引用之前的匯入成果
例子: import spam
以spam.py為例來介紹模組的使用:檔名spam.py,模組名spam
#spam.py
print('from the spam.py')
money=1000
def read1():
print('spam模組:',money)
def read2():
print('spam模組')
read1()
def change():
global money
money=0
import的使用
#模組可以包含可執行的語句和函式的定義,這些語句的目的是初始化模組,它們只在模組名第一次遇到匯入import語句時才執行(import語句是可以在程式中的任意位置使用的,且針對同一個模組很import多次,為了防止你重複匯入,python的優化手段是:第一次匯入後就將模組名載入到記憶體了,後續的import語句僅是對已經載入到記憶體中的模組物件增加了一次引用,不會重新執行模組內的語句),如下
#test.py
import spam #只在第一次匯入時才執行spam.py內程式碼,此處的顯式效果是隻列印一次'from the spam.py',當然其他的頂級程式碼也都被執行了,只不過沒有顯示效果.
import spam
import spam
import spam
'''
執行結果:
from the spam.py
'''
# 使用 # print(spam.money) # print(spam.read1) # print(spam.read2) # print(spam.change) # 例1 # money=200 # spam.read1() # 例2 # def read1(): # print('run1.read1') # # spam.read2() # 例3 # money = 200 # spam.change() # # print(money) # print(spam.money)
2.12.import優缺點:
優點:訪問的時候需要加字首,指名道姓地問某一個名稱空間要名字,肯定不會與當前名稱空間中的名字衝突
# import spam
# money = 100000
# print(spam.money)
# print(money)
缺點:每次引用都需要加字首,增加了程式碼的複雜度
2.13.其他語法:
# import spam, os, time # import spam as sm,os as xxx # print(sm.money)
2.2. 使用模組之from ... import...
2.21from匯入模組也發生了三件事
(1)、會觸發模組對應檔案的執行,產生一個模組的名稱空間
(2)、執行模組檔案的程式碼,將執行過程中產生的名字都丟到模組的名稱空間
(3)、在當前執行檔案的名稱空間中拿到一個名字,該名字指向指向模組名稱空間中對應的名字
2.22.from...import...的使用
# from spam import money
# from spam import read1
# from spam import read2
# from spam import change
# 第二次匯入直接引用之前的成果
# 使用 # money = 200 # print(money) # print(read1) # print(read2) # print(change) # money=200 # read1() # money = 200 # def read1(): # print('run2.read1',money) # # read1()
2.23 其他語法
from spam import money, read1, read2, change from spam import money as m, read1, read2 as r2, change
from spam import *
__all__=['money','read1'] #可以使用__all__來控制*(用來發布新版本),在spam.py中新增一行
# print(money)
# print(read1)
print(read2)
# print(change)
2.24 from匯入優缺點:
優點:無需加字首,程式碼簡潔
缺點:容易與當前名稱空間中的名字衝突
2.25 from...import 與import的對比
#唯一的區別就是:使用from...import...則是將spam中的名字直接匯入到當前的名稱空間中,所以在當前名稱空間中,直接使用名字就可以了、無需加字首:spam.
#from...import...的方式有好處也有壞處
好處:使用起來方便了
壞處:容易與當前執行檔案中的名字衝突
2.3 迴圈匯入問題
2.4
五.區分py檔案的2種用途
複製程式碼
#編寫好的一個python檔案可以有兩種用途:
一:指令碼,一個檔案就是整個程式,用來被執行
二:模組,檔案中存放著一堆功能,用來被匯入使用
#python為我們內建了全域性變數__name__,
當檔案被當做指令碼執行時:__name__ 等於'__main__'
當檔案被當做模組匯入時:__name__等於模組名
#作用:用來控制.py檔案在不同的應用場景下執行不同的邏輯
if __name__ == '__main__':