日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

带你学python基础:模块和包

發布時間:2025/3/20 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 带你学python基础:模块和包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、什么是模塊

在我們平時的開發過程中,或多或少會用到 Python 的一些內置的功能,或者說,還會用到一些第三方的庫,我們用到的這些 Python 的內置的功能,和一些第三方的庫,就可以說是一些模塊了。

例如,我們在讀寫文件的時候,我們就會用到文件操作的模塊os。

是不是經常遇到呢?模塊,來了!

其實,每一個 Python 腳本文件都可以被當成是一個模塊。

模塊以磁盤文件的形式存在。當一個模塊變得過大,并且驅動了太多功能的話,就應該考慮拆一些代碼出來另外建一個模塊。

模塊里的代碼可以是一段直接執行的腳本,也可以是一堆類似庫函數的代碼,從而可以被別的模塊導 入(import)調用。模塊可以包含直接運行的代碼塊、類定義、 函數定義或這幾者的組合。

推薦所有的模塊在Python模塊的開頭部分導入。而且最好按照這樣的順序:

  • Python標準庫模塊
  • Python第三方模塊
  • 自定義模塊

這個只是說約定這樣最好,其實怎樣的順序都是沒有關系的!!!

二、如何使用模塊

我想,應該知道什么是模塊了吧!

那好,再看看如何使用吧!

在 Python 中用關鍵字import來引入某個模塊,比如要導入模塊 os,就可以在文件最開始的地方用import os來引入。下面,看一個簡單的例子。

# 導入系統os模塊 import os# 列出目錄下的文件 files = os.listdir('F:\\人工智能\\2018北風網人工智能(完結)\\三、python基礎(1)\\學習PPT\\學習PPT') print(files)

這個例子中,我們導入了系統 os 模塊,然后調用這個 os 模塊的方法,列出目標目錄下的所有文件!

import使用方法

語法

import module1 import module2 ...... import moduleN

或者

import module1[, module2[,... moduleN]]

[]:表示可選!

模塊函數調用

當我們導入了模塊之后,我們就可以通過模塊名.函數名來調用模塊中的函數了,其實,我們也可以直接函數名 調用方法即可。但是需要注意的是,如果多個模塊中都有相同的一個方法名時,我們就必須要用模塊名.函數名來調用模塊中的函數,不然會出現沖突!

例如

files = os.listdir('F:\\人工智能\\2018北風網人工智能(完結)\\三、python基礎(1)\\學習PPT\\學習PPT')

這就是調用模塊中的方法!

導入模塊中部分方法

有時候,我們并不需要導入模塊中的所有方法,所以,python的也提供了,只導入我們需要導入的方法的方式。

  • from modname import name1[, name2[, … nameN]]

例如,要導入模塊time的sleep函數,使用如下語句。

from time import sleep, strptime

導入所有內容

from modname import*

有時候,因為模塊的名字太長或者太復雜,可能寫的時候不太方便,所以,我們可以使用別名的方式來導入,方便編寫!

別名導入

別名導入,只需要在導入語句后面加關鍵字as。

import numpy import numpy as np # 為numpy取別名為np

二、自定義模塊

既然,python可以有內置的模塊,那么我們可不可以自定義自己的模塊呢,把自己的功能做成一個模塊豈不是美滋滋?

當然沒有問題了,下面就來自己實現!

同文件夾實現

這個是說,python文件都在同一個文件夾下的情況。

現在,我們在同一個文件夾下定義兩個 python 文件,分別為test.py,02_demo.py。

在test.py中定義如下內容

def sum(a, b):return a + b

導入方法

在02_demo.py中

# 導入同文件夾下 import testfrom test import sumprint(sum(1, 2))

可以看出,同一文件夾下,只需要直接導入文件名即可!

不同文件夾實現

現在有02_demo.py和在learn文件下的test02.py文件,目錄如下

test02.py內容

def mul(a, b):return a * b

在02_demo.py中跨文件夾調用

# 跨文件夾調用 import learn.test2from learn import test2print(test2.mul(1, 5))

不同文件夾的調用,我們發現,需要加上文件路徑,例如,test02文件在learn文件夾下,所以導入方式為learn.test02。

然而,

這并不是最完美的,你想,如果項目很大,文件夾下很多的模塊,是不是每個都這樣導入,是不是會很麻煩。所以,python 中還提供了更簡單的方式–將目標路徑加入到環境當中。

'''跨模塊引入2 ''' import sys # 查看路徑變量print(sys.path) # 添加目標路徑導當前環境中 sys.path.append('.\\learn') # 返回上一級目錄 import test2 as ttprint(tt.mul(1, 10))

是不是簡單多了!

另外,如果我們自己定義的模塊和系統模塊重名,導入的時候是會覆蓋系統的模塊哦!

例如,我們在learn文件夾下定義一個 math.py 文件

math.py文件

import mathdef tan(x):return math.tan(x) + 1

當我們導入math的時候,是會覆蓋系統的math的,導入的將是我們自定義的math。

# 覆蓋標準模塊 from learn import mathprint('自定義:', math.tan(30))import mathprint('系統:', math.tan(30))

最后再講一個東西,包!

三、包

既然有了模塊,為什么還會有包呢,包到底是什么呢?容我一一道來。

我們都知道一個模塊通常是一個 python 文件,但是,這樣是不是顯得太零散了,如果我們出門的時候,東西太多了,是不是需要一個書包來裝一下這些東西,就更方便是不是!所以,包就是這個作用,把一些功能相近或者相似的模塊,都放在一個稱為的地方!

這個包如何?哈哈!

那么包和模塊到底有什么不一樣呢?

包使用

包是一個文件夾,但是,他有一個特殊之處,我們必須在這個文件夾下面定義一個__init__.py的文件,才能被程序認作是包,模塊才能被導入成功。

現在我們就用一個,首先,我們新建一個名為package的文件夾,然后再定義一個__init__.py的文件。

然后,再在這個文件夾下新建 test10.py 和test11.py文件,內容如下

test10.py

def subtract(x, y):return x - y

test11.py

def add(x, y):return x + y

好了,現在我們試著導包

# 導包演示import packageprint(test10.subtract(10, 10))

我們發現報錯:說我們的test10沒有定義,但是我們明明定義了,為什么呢?

原來,在我們創建一個__init__.py文件,并且一定要在文件中寫入__all__變量,為什么需要這個變量呢?

因為__init__.py控制著包的導入行為。如果__init__.py文件為空的話,僅僅是把這個包導入,不會導入包中的模塊。__init__.py中的__all__變量,是用來控制from包名import * 時導入的模塊

所以,我們在__init__.py中加入__all__變量。

__all__ = ['test10', 'test11']

就正確了。

包會了吧?

最后的最后,說一個小知識點。

imp.reload()

這個函數有什么作用呢?

試想一下這樣的場景,模塊在第一次被導入之后,其他的導入都不再有效。如果此時在另一個窗口中改變并保存了模塊的源代碼文件,也無法更新該模塊。

這樣設計原因在于,導入是一個開銷很大的操作(導入必須找到文件,將其編譯成字節碼,并且運行代碼),以至于每個文件、每個程序運行不能夠重復多于一次。

當一個模塊被導入到一個腳本,模塊頂層部分的代碼只會被執行一次。
因此,如果你想重新執行模塊里頂層部分的代碼,可以用reload()函數。該函數會重新導入之前導入過的模塊。

'''重新加載 ''' import test # import test #引入兩邊只輸出一句hahaha import imp imp.reload(test) #重新導入test模塊 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的带你学python基础:模块和包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。