特別強調
首先一句話:
import 進來了簡單來說就是跟在本程序裏寫的一樣(跟在自己家一樣)
from 文件夾📁 import 某個模塊📃
from 文件夾📁 import *所有東東📑
這裏要注意需要使用__ all __纔可完全引入
Import講解
格式 | 代碼 |
---|---|
py全引入(一切皆可直接用) | from dictionarySeg.hi import * |
py名引入(需要 文件名.內容) | from dictionarySeg import hi |
py全引入 - 一切皆可直接用
hi.py(模塊)
print('\nhi! 我是直出')
p = print('\nhi! 我來自P變量輸出')
def out():
back = '\nhi! 我是負責返回的小可愛'
print('\nhi! 我來自out方法')
return back
t1.py
from dictionarySeg.hi import *
p # 變量
print('\n-------')
out() # 方法
print('\n-------')
back = out() # 返回值
print('\n-------')
print(back)
結果展示
💡
需要注意
import 讓它提供某個變量或給出某個方法時,它會完整跑hi.py這個模塊,那自然這個模塊原有的print輸出也會被輸出。
py名引入
1 - 提供某個變量或給出某個方法時 需要 文件名.內容
hi.py(模塊)
print('\nhi! 我是直出')
p = print('\nhi! 我來自P變量輸出')
def out():
back = '\nhi! 我是負責返回的小可愛'
print('\nhi! 我來自out方法')
return back
t1.py
from dictionarySeg import hi
hi.p # 變量
print('\n-------')
hi.out() # 方法
print('\n-------')
back = hi.out() # 返回值
print('\n-------')
print(back)
💡
1 需要注意
import * 時可以直接用裏面的東西,簡單來說就是跟在本程序裏寫的一樣(跟在自己家一樣)
import 模塊名 時 需要 模塊名.變量/方法纔可使用
💡
2 需要注意
import 讓它提供某個變量或給出某個方法時,它會完整跑hi.py這個模塊,那自然這個模塊原有的print輸出也會被輸出。
2 - import模塊名 可命令程序 跑這個模塊
hi.py(模塊)
print('\nhi! 我是直出')
# p = print('\nhi! 我來自P變量輸出')
#
#
# def out():
#
# back = '\nhi! 我是負責返回的小可愛'
# print('\nhi! 我來自out方法')
#
# return back
t1.py
from dictionarySeg import hi
hi
# hi.p # 變量
#
# print('\n-------')
#
# hi.out() # 方法
#
# print('\n-------')
#
# back = hi.out() # 返回值
#
# print('\n-------')
#
# print(back)
💡
需要注意
import模塊名 可命令程序 跑這個模塊
import * 其實也可以辦到,你需要在__ init __.py 中 寫入 __ all __
舉個例子
Directory與Python package的區別
python作爲一個相對而言輕量級的,易用的腳本語言,我們可將Python代碼分爲:
- 主程序
- 組織模塊
程序的目的是爲了運行,而模塊的目的是爲了其他程序進行引用。
- Dictionary
Dictionary在pycharm中就是一個文件夾,放置資源文件。
- Python package
Python package 文件夾與Dictionary不同之處在於其會自動創建__init.py__文件。
簡單的說,python package就是一個目錄,其中包括一組模塊和一個__init.py__文件。
__init.py__文件
該文件與Python的import機制有關,這關乎到你的哪些.py文件是對外可訪問的。
__ init __ .py可以爲空,當其爲空時,from Image import * 將 Image 包下所有的模塊都進行引用,如果想要控制引用的模塊,則可以自行定義 __ all __
用 __ all __ 暴露接口
有些時候,如果一個包下有很多模塊,在調用import如此多模塊是很費事,且不優雅的。
此時可以通過修改__init__.py來完成該任務。
在__init__.py中定義特殊變量__all__ ,將 要包含的模塊複製給該變量。
例如在Image/ __ init __.py中定義 __ all __=[‘tiff’,’bmp’,’jpg’]。
這裏的all 對應的就是 from … import * 中的*代指的模塊,此時在引用方使用如下語
如果一個模塊需要暴露的接口改動頻繁,all 可以這樣定義:
__all__ = [
"foo",
"bar",
"egg",
]