1. 程式人生 > 其它 >暑假學習記錄30 標籤3

暑假學習記錄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__':