funs.py文件
def fun1():
print("execute fun1")
def fun2():
print("execute fun2")
def _fun3():
print("execute _fun3")
if __name__=='__main__':
import sys
print(sys.argv)
執行:
導入模塊
只導入模塊名;
方法調用:module.function
import funs #只導入模塊名
funs.fun1() #方法調用:module.function
導入部分方法/變量;不導入模塊名
方法直接通過方法名調用
from funs import fun1,fun2 #導入部分方法/變量;不導入模塊名
fun1() #方法直接通過方法名調用
導入模塊中所有方法和變量
前面帶下劃線的方法不被導入
from funs import * #導入模塊中所有方法和變量
fun1()
_fun3() #前面帶下劃線的方法不被導入。報錯NameError: name '_fun3' is not defined
修改導入的模塊名爲f
import funs as f #修改導入的模塊名爲f
f.fun1()
funs.fun1() #NameError: name 'funs' is not defined
from funs import fun1 as f
f()
說明
- 解釋器中每個模塊只被導入一次,要重新導入: import importlib; importlib.reload(modulename).
- import導入模塊,解釋器先查找內建模塊,然後查找sys.path路徑(最先是腳本所在路徑)
sys.path
import sys
print(sys.path) #解釋器查找模塊的路徑
sys.path.append("H:\\11\\22")
print(sys.path)
dir()
dir(moudle)獲取模塊中定義的名稱
import funs,sys
print(dir(funs))
print(dir(sys))
輸出:
dir()獲取當前可用名稱
a="a"
import funs
print(dir())
獲取內建方法的名稱
import builtins
print(dir(builtins))
包
文件結構:
pack1
__init__.py
pack2
__init__.py
module2.py
pack21
__init__.py
module1.py
pack3
導入單個模塊
import pack1.pack2.module2 #導入單個模塊
pack1.pack2.module2.fun1() #調用
導入單個模塊
# from pack1.pack2 import module2
# module2.fun1()
導入方法或變量
from pack1.pack2.module2 import fun1
fun1()
from package import *
相對路徑 模塊中使用
from . import echo
from … import formats
from …filters import equalizer