模組的使用

2022-07-14 23:03:18 字數 2123 閱讀 1458

一、什麼是模組?

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

模組的分類:自定義模組、第三方模組、內建模組(c語言寫的一些功能)

常見的模組形式:

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

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

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

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

二、為什麼要用模組?

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

使用自定義模組可以使我們的程式更清晰,方便管理,實現功能的重複利用。(自定義模組即將我們自己程式中需要用到的公共的功能寫入到乙個python檔案,然後的程式的各部分元件可以通過匯入的方式來引用/重用自定義模組中的功能。)

三、如何用模組?

匯入的方式有兩種:

import 模組名          --->前提是有這個模組!

from 模組名 import 具體的功能

以spam.py為例來介紹模組的使用,檔名是spam.py,模組名是spam。

print('

from the spam.py')

money = 1000

defread1():

print('

spam模組:

',money)

defread2():

print('

spam模組')

read1()

defchange():

global

money

money = 0

在導模組的時候會觸發檔案的執行,檔案只要執行了會發生什麼事?

1、會以run.py檔案(當前執行檔案)為準,在記憶體中會造乙個內建命名空間,會造乙個以檔案級別全域性命名空間

首次匯入模組發生了3件事:(重複匯入會直接引用之前創造好的結果,不會重複執行模組的檔案)

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

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

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

import spam    #

直接引入模組

如果模組名過長可以起個別名:

import 過長的模組名 as 新的別名
在一行當中導多個某塊:用逗號隔開,但是不建議這麼寫,這樣寫不夠清晰,最好一行導乙個

import time,spam,os,sys
from ... import ... 首次匯入發生3件事

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

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

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

from ... import ...   對比 import ...

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

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

相同點:

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

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

不同點:

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

支援取別名

可以一行匯入多個

from ... import *   把模組中所有的不是以下劃線__開頭的名字都匯入到當前位置。

注意:大部分情況下我們的python程式不應該使用這種匯入方式,因為*你不知道你匯入什麼名字,很有可能會覆蓋掉你之前已經定義的名字。而且可讀性極其的差,在互動式環境中匯入時沒有問題。
在模組裡定製乙個變數

__all__ = ['

read1

','money

']

模組的使用,模組的搜尋路徑

模組的使用 1 什麼是模組 模組是一系列功能的集合體 常見的模組形式 自定義模組 第三方模組 內建模組 1 乙個module.py檔案就是乙個模組,檔名是module.py,而模組名是module 2 乙個包含有 init py檔案的資料夾也是模組 3 已被編譯為共享庫或dll的c或c 擴充套件 4...

python bisect模組的使用

這個模組只有幾個函式,一旦決定使用二分搜尋時,立馬要想到使用這個模組 import bisect l 1,3,3,6,8,12,15 x 3 x insert point bisect.bisect left l,x 在l中查詢x,x存在時返回x左側的位置,x不存在返回應該插入的位置.這是3存在於列...

perl File Tail模組的使用

最近在做乙個實時資料的工作,需要讀取不斷更新的檔案,類似shell中tail的功能,使用了perl的file tail模組,簡要 如下 use file tail my file file tail new name new file first file date interval 1,maxin...