iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0
Software Development

Python 微進階系列 第 14

Python 微進階 Day14 - import

  • 分享至 

  • xImage
  •  

import

  • 在 Python 中,有很多內建或已經寫好的套件可以直接使用,在使用前就需要先進行匯入,因此需要使用 import,在前面的章節也都有提到
  • 匯入 module 或 package 的方法主要有 3 種
    • import name:匯入 name,可加入 as 匯入並改名,import numpy as np
    • from name import name1, name2:從 name 匯入 name1name2
    • from name import *:從 name 匯入不以 _ 開頭的名稱
  • 注意! 在使用時要避免交互參照,例如在 a.py 匯入 b,在 b.py 匯入 a
    • 如果一個 module 已經被導入,Python 不會重新導入,但是如果 module 嘗試存取另一個 module 中定義的函式或變數的時,可能就會遇到因為交互參照而造成的錯誤
  • 建議
    • 同一個目錄(資料夾)下,建議使用相對路徑 from .n1 import m1,而不直接使用 import n1
    • 跨目錄或 package 則使用絕對路徑,如在 from package.p1 import n1
package/
  __init__.py
├─p1/
  __init__.py
  n1.py
  n2.py
├─p2/
  __init__.py
  n2.py

p1/n2.py 匯入 n1
from . import n1

p2/n2.py 匯入 n1
from package.p1 import n1

__name__

  • __name__
    • 當 py 檔是當成 module 匯入時,此時的 __name__ 的名稱會是 module 的名稱(檔名)
    • 當 py 檔是當成主程式執行(就是使用命令列執行 python xxx.py)時,此時的 __name__ 的名稱會是 __main__
  • 因此當我們想單獨執行或是也可當模組匯入時,通常就會用以下方式來做區隔
    • if __name__ == "__main__":
    • 當我們 import 時,那個 module 就會被執行一次(例如一些 print()),透過這個方式可以確保在 import 時不會被執行

架構如下

def fun1():
    # xxx

def fun2():
    # xxx

def main():
    # xxx


if __name__ == "__main__":
    main()
else:
    # module 初始化
    # 如果需要的話

參考資料

次回

來談談遇到錯誤怎麼辦?


上一篇
Python 微進階 Day13 - package(套件)
下一篇
Python 微進階 Day15 - try except(例外處理) - 1 - raise
系列文
Python 微進階31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言