Python / import === ###### tags: `Python` ###### tags: `Python`, `import`, `package` <br> [TOC] <br> ## [教學範例] 建立 import 捷近 ### 專案結構 ``` myproject/ └── mylib/ ├── __init__.py └── main.py ``` ### 程式碼 - ### `mylib/main.py` ```python def hello() -> None: print("Hello, world!") ``` - ### `mylib/__init__.py` ```python # 讓 hello 成為套件頂層屬性 from .main import hello # (可選)讓 IDE/型別工具更清楚可用介面 __all__ = ["hello"] ``` <br> ### 使用方式 - ### 舊的使用方式 ```python from mylib.main import hello hello() # 印出: Hello, world! ``` - ### 建立 import 捷近後,新的使用方式 ```python from mylib import hello hello() # 印出: Hello, world! ``` <br> ### 小提醒(避免踩雷) - **避免循環匯入**:只在 `__init__.py` 做「重新匯出」即可,不要在 `main.py` 反向 `import mylib`。 - **命名衝突**:若日後增加同名符號,記得同步更新 `__all__` 或改用明確匯入。 <br> --- ## 討論 ### import 順序 - ### Question 一般是怎麼排序? from 優先? import 優先? 內建/內部 lib 優先?外部 lib 優先? - ### gpt-4o (2025/04/24) 這是一個很棒的問題!Python 的 import 排序 是有「公認慣例」的,特別是如果你希望你的專 案看起來專業、乾淨、好維護。這個慣例主要是由 PEP 8 所制定。 ### ✅ PEP 8 建議的 import 排序順序: 三個區塊,並且 中間用一行空行分隔 1. 標準函式庫(Standard Library imports) 2. 第三方套件(Third-party imports,如 `requests`, `numpy`) 3. 本地應用/模組(Local application/library imports) <br> {%hackmd vaaMgNRPS4KGJDSFG0ZE0w %}
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up