python写文字冒险游戏_木兰语言 0.0.15.1:继续改写 Python 冒险游戏;引用包路径规则小结...
這幾天在用木蘭語言繼續(xù)改寫 Python 文字冒險(xiǎn)游戲例程時(shí),又體驗(yàn)到引用模塊時(shí)使用的包路徑與 Python 的差別,之前雖然寫過相關(guān)測試但未整理成文檔,在此小結(jié)一下。
以下面的文件目錄為例(注意:不需在包目錄中添加 __init__.py 之類的文件):
一級包
二級包
甲.ul
乙.ul
甲和乙為木蘭源碼,內(nèi)容如下,甲.ul:
a = 3
乙.ul 中引用甲模塊:
using 甲
print(甲.a)
如果在“二級包”目錄下運(yùn)行:
$ 木蘭 乙.ul
輸出 3 無誤。
但如果在“二級包”的上一級目錄“一級包”下運(yùn)行則會(huì)報(bào)錯(cuò):
$ 木蘭 二級包/乙.ul
😰 沒找到模塊:‘甲’
調(diào)用層級如下
見第1行:using 甲
需要將 乙.ul 中的包路徑改為才能正確運(yùn)行:
using 二級包.甲
print(二級包.甲.a)
此時(shí)如果有另一個(gè)二級包:
一級包
二級包
甲.ul
乙.ul
二級包2
丙.ul
也可以在乙中引用丙:
using 二級包2.丙
print(二級包2.丙.b)
丙.ul內(nèi)容:
b = 4
在“一級包”下運(yùn)行 $ 木蘭 二級包/乙.ul 輸出 4
類似的,如果在“二級包”下運(yùn)行則會(huì)報(bào)錯(cuò):
$ 木蘭 乙.ul
😰 沒找到模塊:‘二級包2’
調(diào)用層級如下
見第1行:using 二級包2.丙
簡言之,現(xiàn)在看來的包路徑規(guī)則是:
當(dāng)前運(yùn)行目錄 + 包路徑(將.替換為/)= 模塊路徑
比如上面在“一級包”下運(yùn)行時(shí),運(yùn)行目錄為:一級包
引用的模塊“甲”的路徑為:一級包/二級包/甲
那么包路徑就要:二級包/甲(代碼中是 using 二級包.甲)
這樣的包路徑設(shè)定規(guī)則比較直觀,但也意味著,對于存在引用的模塊,必須在一個(gè)特定目錄下運(yùn)行,在任何其他目錄下運(yùn)行都會(huì)出現(xiàn)無法找到模塊的錯(cuò)誤。
下面是 0.0.15.1 版重現(xiàn)的幾個(gè)小功能:
throw 語法,對應(yīng) Python 的 raise
isa 內(nèi)置函數(shù),對應(yīng) Python 的 isinstance
改進(jìn)部分報(bào)錯(cuò)信息
文檔方面,為便于有意者參與木蘭項(xiàng)目的開發(fā)維護(hù),編寫了開發(fā)流程與項(xiàng)目結(jié)構(gòu)簡介,今后逐步完善。另開始小結(jié)與 Python 的語法對比。
附:代碼量統(tǒng)計(jì)
主要部分的代碼行數(shù)統(tǒng)計(jì),格式為:上次->現(xiàn)在。
木蘭代碼量 3260 -> 3307
運(yùn)行環(huán)境,實(shí)現(xiàn)與測試大部為木蘭代碼:582
木蘭測試用例,包括部分實(shí)用小程序(如井字棋):2678 -> 2725 (報(bào)錯(cuò)信息測試用例替代了源碼中的注釋)
Python 代碼量(木蘭實(shí)現(xiàn)與測試框架):2721 -> 2920
分析器/語法分析器.py:1015 -> 1021
分析器/詞法分析器.py:207 -> 213
分析器/語法樹.py:202 -> 209
環(huán)境.py,定義全局方法:172 -> 174
測試/期望值表.py(從“運(yùn)行所有.py”中提取):131 -> 133
功用/規(guī)律.py,正則表達(dá)式 API 原型:100
分析器/語法成分.py,從語法分析器中提取出來的枚舉常量:82 -> 83
功用/反饋信息.py:71 -> 75
測試/運(yùn)行所有.py,檢驗(yàn)所有木蘭測試代碼片段:62 -> 71
未變
交互.py,交互環(huán)境(REPL):148
中.py,主程序:74
功用/調(diào)試輔助.py,:57
setup.py, 34
測試/unittest/語法樹.py,確保生成的語法樹與原始版本一致:88
測試/unittest/正則.py:62
測試/unittest/交互.py,交互環(huán)境相關(guān)測試:28
測試/unittest/所有用例.py:24
分析器/錯(cuò)誤.py:26
總結(jié)
以上是生活随笔為你收集整理的python写文字冒险游戏_木兰语言 0.0.15.1:继续改写 Python 冒险游戏;引用包路径规则小结...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 万字详解SSH(SSH登录原理+SSH配
- 下一篇: 有源滤波器和无源滤波器的区别及原理