[oeasy]python0140_導(dǎo)入_import_from_as_namespace_
導(dǎo)入import
回憶上次內(nèi)容
上次學(xué)習(xí)了
try
except
注意要點(diǎn)
半角冒號(hào)
縮進(jìn)
輸出錯(cuò)誤信息
有錯(cuò)就報(bào)告
系統(tǒng)報(bào)錯(cuò)信息原樣輸出
不要隱瞞
否則找不到出錯(cuò)位置
還可以用traceback把
但是代碼量好多啊
10多 行了 ??
可以把他輸入部分和輸出部分么???
我們先試試
怎么引用 其他的py文件
構(gòu)建環(huán)境
先新建一個(gè)namespace文件夾
然后進(jìn)入這個(gè)文件夾
新建兩個(gè)文件
oeasy.py
my_module.py
被引用模塊
主體程序

然后進(jìn)去
vi -o my_module.py oeasy.py
-o 是分窗口編輯文件
編輯這兩個(gè)文件
效果
結(jié)果如下圖所示

oeasy.py中輸入
import my_module
my_module.py中輸入
print("in another")
保存并運(yùn)行
ctrl+k切換到上方windows
ctrl+j切換到下方windows

:wqa
w
的意思是先保存q
退出vima
代表 all buffers 所有緩存全部保存并退出
運(yùn)行結(jié)果
運(yùn)行的是oeasy.py
輸出了"i am my_module.py"
這說(shuō)明
導(dǎo)入成功了

運(yùn)行的是
oeasy.py
oeasy.py中導(dǎo)入了
my_module.py
my_module.py中
輸出了 "i am my_module.py"
通過(guò)導(dǎo)入my_module.py
執(zhí)行了其中的代碼
導(dǎo)入對(duì)應(yīng)的關(guān)鍵詞import
應(yīng)該如何理解呢?
import
進(jìn)口(import)
這里指的是導(dǎo)入模塊
這也是python強(qiáng)大之處
可以導(dǎo)入各種使用的包來(lái)使用

可以導(dǎo)入多個(gè)文件嗎???
導(dǎo)入多個(gè)文件
上圖建議的是
不同模塊分行導(dǎo)入

導(dǎo)入除了可以調(diào)用對(duì)方代碼
還能做什么呢?
嘗試引用包內(nèi)變量

可以在my_module.py中定義變量
在oeasy.py中引用嗎?
嘗試運(yùn)行

pi沒(méi)有找到??

不慌
好飯不怕晚
不是把這些字節(jié)碼都運(yùn)行了么?
但是這里面有個(gè)作用域(namespace)的問(wèn)題
i 屬于 my_module.py
而不屬于oeasy.py
所以直接運(yùn)行找不到i
那怎么辦?
修改
只要說(shuō)清楚這個(gè)i來(lái)自于my_module就可以了
用一個(gè)點(diǎn)(
.
)就是 在my_module
的
i就可以說(shuō)明從屬關(guān)系
點(diǎn)(
.
)的意思是的
在 my_module
.
pi

:wa
write all
兩個(gè)文件都保存
:!python3 %
用外部命令python3運(yùn)行當(dāng)前文件

pi找到了??
在my_module.py中
pi就是一個(gè)標(biāo)準(zhǔn)的變量聲明賦值
如果我就想在
oeasy.py
中直接使用pi
可能么?
修改
聲明了一個(gè)變量pi
并把mymodule.i的值賦給他

還有其他寫法嗎?
from...import...
這句話好像好使

local()函數(shù)
可以查看本地局部變量

本地變量會(huì)撞車嗎?
撞車(local name crash)

因此要特別注意盡量
不要使用from xxx import *
這種容易撞車的語(yǔ)句

撞車是什么樣子的???
可以欣賞一下車禍現(xiàn)場(chǎng)嗎?
車禍現(xiàn)場(chǎng)

my_module.pi 被 math.pi 撞飛了

這其實(shí)也是名字空間(namespace)的意義
namespace
名字空間是個(gè)好主意!

那可以給導(dǎo)入進(jìn)來(lái)的變量改名么?
from ... import ... as ...

可以的
這樣可以把變量名更明確一點(diǎn)
其實(shí)就是又起了個(gè)名字
然后進(jìn)行賦值
任務(wù)達(dá)成?。?!
總結(jié)一下 !??ヽ(°▽°)ノ?
總結(jié)
我們這次導(dǎo)入了外部的py文件
不能 直接使用 my_module.py文件中的變量
只要加
my_module.
作為前綴就可以導(dǎo)入一個(gè)自己定義的模塊
import my_module
可以使用my_module中的變量
直接導(dǎo)入導(dǎo)入變量、函數(shù)
導(dǎo)入變量并重命名
可以導(dǎo)入my_module.pi 并作為pi變量使用
from my_module import pi
from my_module import pi as my_module_pi
上次那個(gè)蘋果香蕉統(tǒng)計(jì)程序
能封裝成文件模塊
再導(dǎo)入么???
下次再說(shuō) ??
藍(lán)橋->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython