管理python import - jenhaoyang/backend_blog GitHub Wiki
Module
An object that serves as an organizational unit of Python code. Modules have a namespace containing arbitrary Python objects. Modules are loaded into Python by the process of importing.
在實務上,Module通常就是內含python並以.py為副檔名的檔案
Namespace
>>> import math
>>> math.pi
3.141592653589793
在這裡math.pi的math就等同於namespace
用dir()可以看到global namespace裡面的所有東西
dir(math)可以看到math這個namespace底下的東西
將module加入globel namespace
>>> from math import pi
>>> pi
3.141592653589793
>>> math.pi
NameError: name 'math' is not defined
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'pi']
這個例子可以發現pi被加到globel namespace了
Package
A Python module which can contain submodules or recursively, subpackages. Technically, a package is a Python module with an __path__ attribute.
在實務上,Package通常是一個資料夾,內含python檔或是其他資料夾,要建立packege必須在package資料夾裡建立一個__init__.py檔
通常import package的時候,submodules和subpackages不會被import,不過我們可以利用__init__.py來import需要的submodules和subpackages。
- import module:
建立namespace並且將module底下的內容都import - import package:
建立namespace並且import init.py底下的內容,如果__init__.py為空則不import任何submodule或subpackage
參考:
https://realpython.com/python-import/
https://dev.to/codemouse92/dead-simple-python-project-structure-and-imports-38c6