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