Python import過程解析
阿新 • • 發佈:2018-12-15
模組與包
模組:一個.py檔案 包:一個資料夾,裡面一定包括一個__init__.py檔案,可能包括子包和模組
import module
# module.py
a = 1
print('module.py')
# test.py
import module
print(module.a)
module.py
1
結論:import module 即執行模組裡的全部程式碼
from module import var/class
# module.py
a = 1
print(module.py)
class c:
def __init__(self):
print('class init' )
# test.py
from module import a
print(a)
from module import c
c()
1
class init
結論:from module import var/class 就是從模組裡單獨引入一個變數/類,而不執行模組內其他語句
import package
# package/module.py
a = 1
print('module.py')
class c:
def __init__(self):
print('class init')
# package/__init__.py
print('__init__.py')
var_in_init = 2
# test.py
import package
print(package.var_in_init)
__init__.py
2
結論:import package 就相當於引入包內的__init__模組
from package import module
# package/module.py
a = 1
print('module.py')
class c:
def __init__(self):
print('class init')
# package/__init__.py
print('__init__.py')
var_in_init = 2
# test.py
from package import module
print(module.a)
module.c()
module.py
1
class init
結論:from package import module 相當於上面說的引入模組
from package(.sub_package).module import var/class
# package/module.py
a = 1
print('module.py')
class c:
def __init__(self):
print('class init')
# package/__init__.py
print('__init__.py')
var_in_init = 2
# test.py
from package.module import a
print(a)
from package.module import c
c()
1
class init
結論:from package(.sub_package).module import var/class 就相當於上面說的 from module import var/class
錯誤用法
經過測試,以下語句執行時會發生錯誤:
import package; print(package.module.var/class)