Python模塊導入
項目目錄結構
PythonProject --父目錄
__init__.py
main.py
| --pac1 --子目錄:pac1
__init__.py
f1.py
| --pac2 --子目錄:pac2
__init__.py
f2.py
注:Python新建一個包時,該目錄下回自動生成一個 __init__.py 文件。
--f1.py
# -*- coding:utf-8 -*-
def func1():
print('Hello World!')
--f2.py
# -*- coding:utf-8 -*
def func2():
x = 9 + 9
print(x)
場景:要在 f2 中導入 f1 並調用 f1 中的方法 func1()
①、f1 和 f2 在同級目錄的不同的子目錄中,所以不能直接調用,並且也不能直接調用父目錄的模塊
②、父目錄調用子目錄的模塊、子目錄之間調用模塊,使用如下相同方法
1)方式一:import PythonProject.pac1.f1 --導入模塊PythonProject.pac1.f1
注:導入後,只能全名訪問模塊屬性 --例如:PythonProject.pac1.f1.func1()
# -*- coding:utf-8 -*
import PythonProject.pac1.f1 # 導入模塊 f1
def func2():
x = 9 + 9
print(x)
PythonProject.pac1.f1.func1() # 調用模塊 f1 中的func1()方法,只能全名訪問模塊屬性 ---PythonProject.pac1.f1.func1()
2)方式二:from PythonProject.pac1 import f1 --導入模塊PythonProject.pac1.f1
注:導入後,只能以 f1.屬性名訪問模塊屬性
# -*- coding:utf-8 -*
from PythonProject.pac1 import f1 # 導入模塊 f1
def func2():
x = 9 + 9
print(x)
f1.func1() # 導入後,只能以 f1.屬性名 訪問模塊屬性
3)方式三:from PythonProject.pac1.f1 import func1() --導入模塊PythonProject.pac1.f1
注:導入後,直接把 func1() 放入當前名稱空間,可直接訪問
# -*- coding:utf-8 -*
from PythonProject.pac1.f1 import func1 # 導入模塊fill
def func2():
x = 9 + 9
print(x)
func1() # 導入後,直接把 func1() 放入當前名稱空間,可直接訪問
4)方式4:from PythonProject.pac1 import *
注:這個語句的原意圖是想將PythonProject.pac1包下的所有模塊導入到當前的名稱空間.然而,由於不同平臺間文件名規則不同(比如大小寫敏感問題), Python不能正確判定哪些模塊要被導入.這個語句只會順序運行PythonProject和pac1 文件夾下的__init__.py文件. 要解決這個問題,應該在 pac1 文件夾下面的 __init__.py 中定義一個名字all的列表,例如:
# -*- coding:utf-8 -*-
__all__ = ["f1"] ---如果還有其他屬性,直接用逗號“,”分隔,一次添加在後面即可
# -*- coding:utf-8 -*
from PythonProject.pac1 import * # 導入模塊fill
def func2():
x = 9 + 9
print(x)
f1.func1() # 導入後,通過 f1.屬性名 訪問模塊屬性