模組和面向過程程式設計

2021-08-20 19:05:36 字數 1978 閱讀 5478

一:模組介紹

一:可以被當作指令碼去執行

二:可以被當作模組匯入 

1,什麼是模組:

模組是一系列功能的集合體

常見的模組形式  (自定義模組,第三方模組,內建模組)

1、乙個module.py檔案就是乙個模組,檔名是module.py,而模組名是module

2、乙個包含有__init__.py檔案的資料夾也是模組    

3、已被編譯為共享庫或dll的c或c++擴充套件

4、使用c編寫並鏈結到python直譯器的內建模組

2、為什麼要用模組

1、用第三方或者內建的模組是一種拿來主義,可以極大地提公升開發效率

2、自定義模組即將我們自己程式中需要用到的公共的功能寫入乙個python檔案

然後程式的各部分元件可以通過匯入的方式來引用/重用自定義模組中的功能   

3、如何用模組

匯入的方式有兩種

import 模組名

from 模組名 import 具體的功能 

4,首次匯入模組的注意事項

1,  import 模組名

# 首次匯入模組發生了3件事:

#1、以模組為準創造乙個模組的命名空間

#2、執行模組對應的檔案,將執行過程中產生的名字都丟到模組的命名空間

#3、在當前執行檔案中拿到乙個模組名

# 之後的重複匯入會直接引用之前創造好的結果,不會重複執行模組的檔案

# import spam #spam=spam=模組命名空間的記憶體位址

2,from 模組名  import ......

# from ... import ...首次匯入也發生了三件事:

#1、以模組為準創造乙個模組的命名空間

#2、執行模組對應的檔案,將執行過程中產生的名字都丟到模組的命名空間

#3、在當前執行檔案的命名空間中拿到乙個名字,該名字直接指向模組中的某乙個名字,意味著可以不用加任何字首               而直接使用

注意兩者匯入的優缺點:

# from .... import ... 對比 import 。。。

# 優點:不用加字首,**更為精簡

# 缺點:容易與當前執行檔案中命名空間中的名字衝突     

兩者相同點:

# 1、都會執行模組對應的檔案,都會產生模組的命名空間

# 2、呼叫功能時,需要跑到定義時尋找作用域關係,與呼叫位置無關

# 不同點

# 1、一種需要加字首,一種不需要加字首     

x=1def f1():

print('from f1')

def f2():

print('from f2')

print(__name__)

# 在aaa.py被直接執行的時候__name__== '__main__'

# 在aaa.py被當作模組匯入的時候__name__== 'aaa'

# 在aaa.py被直接執行的時候呼叫f1跟f2

# f1()

# f2()

# 在aaa.py被當作模組匯入的時候不呼叫f1跟f2

# if __name__ == '__main__':

#     f1()

#     f2()

二:模組的搜尋路徑

乙個py檔案就是乙個模組,在匯入時必須從某乙個資料夾下找到該py檔案

模組的搜尋路徑指的就是在匯入模組時需要檢索的資料夾們

匯入模組時查詢模組的順序是:

1、先從記憶體中已經匯入的模組中尋找

2、內建的模組

3、環境變數sys.path中找

強調:sys.path的第乙個值是當前執行檔案的所在的資料夾

三:面向過程思想

核心過程二字,過程指的是解決問題的步驟,即先幹什麼、再幹什麼、然後幹什麼...

基於該思想編寫程式就好比在設計一條流水線,是一種機械式的思維方式

優點複雜的問題流程化、進而簡單化(大多使用在程式的框架設計上)

缺點擴充套件性極差

面向過程程式設計和物件導向程式設計

面向過程程式設計和物件導向程式設計 面向過程程式設計是一種以 過程為中心 的程式設計思想 分析出解決問題的步驟,然後用函式把這些步驟一步一步實現 面向過程程式設計,資料和對資料的操作是分離的。物件導向程式設計 物件導向程式設計是 將事物物件化,通過物件通訊來解決問題 物件導向程式設計,資料和對資料的...

面向過程程式設計和物件導向程式設計

面向過程程式設計和物件導向程式設計 一 面向過程程式設計 面向過程程式設計將程式分成了 資料 和 處理函式 兩部分,程式以 處理函式 為核心,如果要執行什麼操作,就將 資料 傳給相應的 處理函式 返回我們需要的結果 面向過程的思路很好掌握,上手容易,但它存在三方面的問題 1 資料和處理函式沒有直接的...

《面向過程和物件導向的程式設計》

關於寫 面向過程和物件導向的程式設計 這個話題我很矛盾,我擔心許多程式設計師對此話題不太感興趣,可能他們不太懂得面向過程和物件導向程式設計的巨大差距,以及對程式設計水平的影響。在我整個程式設計生涯中,有無數的轉變和變化讓我銘記在心。從彙編到 c語言,從檔案系統到資料庫,從 c語言倒 dbase,從c...