iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
Software Development

Python 微進階系列 第 13

Python 微進階 Day13 - package(套件)

  • 分享至 

  • xImage
  •  

package(套件)

  • package(套件) 通常是一組多個 module 組成的資料夾(目錄),因此 package 的名稱就是資料夾的名稱
    • 資料夾內需有 __init__.py 檔案,內容空白亦可,才可被視為 package
    • package 內就像一般的資料夾一樣,除了檔案也可以再建立資料夾,因此除了可以有多個 module,也可以再包含多個子 package
  • 我們常用來安裝第三方套件的 pip 就是透過 Python Package Index(PyPI) 來搜尋並安裝,讓我們可以直接使用
  • 注意! 在建立名稱需注意,不要與 Python 內建或標準函式庫同名,以免原本的功能被覆蓋,如 list()math()

小補充

import

  • 跟 module 其實是一樣的,差別在於改為 package 的名稱
  • import package_name:匯入 package_name
    • 使用 as 匯入並改名,import numpy as np
    • 只包含當下匯入的 package,若需要再下一層,則需要使用 import package1_name.package2_name,就會匯入第一層及第二層
  • from package_name import name1, name2:從 package_name 匯入 name1name2
    • 當不是主程式(main)時,同一個目錄(資料夾)可以使用相對路徑匯入
    • from .p1 import n1:從目前目錄的 p1 匯入 n1
    • from .. import p2:從上層匯入 p2
  • from package_name import *:從 package_name 匯入不以 _ 開頭的名稱
    • 比較不推薦使用

__init__.py

  • 第一次匯入套件時,會自動執行 __init__.py
  • __all__:用來定義 from xxx import * 的名稱
# package/__init__.py

__all__ = ["n1", "n2"]

version = 1.2

# from package import *
# 只會匯入 n1, n2
# 不會匯入 version

# 若無 __all__
# 會匯入 version
# 無法使用 n1, n2

參考資料

次回

預計彙整與補充一下 import 的部分


上一篇
Python 微進階 Day12 - module(模組)
下一篇
Python 微進階 Day14 - import
系列文
Python 微進階31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言