Python——包



Python中,模組是一個帶有.py副檔名的Python指令碼,包含類、函式等物件。Python中的包進一步擴充套件了模組化方法的概念。包是一個包含一個或多個模組檔案的資料夾;此外,一個特殊的"__init__.py"檔案可以為空,但可以包含包列表。

建立Python包

讓我們建立一個名為mypackagePython包。請按照以下步驟操作:

  • 建立一個外部資料夾來儲存mypackage的內容。將其命名為packagedemo
  • 在其中,建立另一個資料夾mypackage。這將是我們即將構建的Python包。兩個Python模組areafunctions.py和mathfunctions.py將建立在mypackage內部。
  • mypackage資料夾內建立一個空的"__init__.py"檔案。
  • 稍後,我們將在外部資料夾中儲存一個Python指令碼example.py來測試我們的包。

檔案/資料夾結構應如下所示:

folder_structure

使用您喜歡的程式碼編輯器,將以下兩個Python模組儲存到mypackage資料夾中。

建立Python包的示例

# mathfunctions.py
def sum(x,y):
   val = x+y
   return val
   
def average(x,y):
   val = (x+y)/2
   return val

def power(x,y):
   val = x**y
   return val

建立另一個Python指令碼:

# areafunctions.py
def rectangle(w,h):
   area = w*h
   return area
   
def circle(r):
   import math
   area = math.pi*math.pow(r,2)
   return area

現在讓我們藉助上述包資料夾之上的Python指令碼測試myexample包。請參考上面的資料夾結構。

#example.py
from mypackage.areafunctions import rectangle
print ("Area :", rectangle(10,20))

from mypackage.mathsfunctions import average
print ("average:", average(10,20))

此程式從mypackage匯入函式。如果執行上述指令碼,您應該得到以下輸出

Area : 200
average: 15.0

定義包列表

您可以將包中選定的函式或任何其他資源放在"__init__.py"檔案中。讓我們在其中放入以下程式碼。

from .areafunctions import circle
from .mathsfunctions import sum, power

要從該包匯入可用的函式,請將以下指令碼另存為testpackage.py,與之前一樣,儲存在包資料夾上方。

定義包列表的示例

#testpackage.py
from mypackage import power, circle

print ("Area of circle:", circle(5))
print ("10 raised to 2:", power(10,2))

它將產生以下輸出

Area of circle: 78.53981633974483
10 raised to 2: 100

包安裝

現在,我們能夠從包資料夾正上方的指令碼訪問包資源。為了能夠在檔案系統的任何位置使用該包,您需要使用PIP實用程式安裝它。

首先,將以下指令碼儲存在父資料夾中,與包資料夾同級。

#setup.py
from setuptools import setup
setup(name='mypackage',
version='0.1',
description='Package setup script',
url='#',
author='anonymous',
author_email='test@gmail.com',
license='MIT',
packages=['mypackage'],
zip_safe=False)

從命令提示符執行PIP實用程式,同時停留在父資料夾中。

C:\Users\user\packagedemo>pip3 install .
Processing c:\users\user\packagedemo
 Preparing metadata (setup.py) ... done
Installing collected packages: mypackage
 Running setup.py install for mypackage ... done
Successfully installed mypackage-0.1

您現在應該能夠在任何環境中匯入的內容。

C:\Users>python
Python 3.11.2 (tags/v3.11.2:878ead1, Feb 7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import mypackage
>>> mypackage.circle(5)
78.53981633974483
廣告