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