您现在的位置是:首页 > 文章详情

木兰语言 0.0.15.1:继续改写 Python 冒险游戏;引用包路径规则小结

日期:2020-12-15点击:332

这几天在用木兰语言继续改写 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.丙 

简言之,现在看来的包路径规则是:

当前运行目录 + 包路径(将.替换为/)= 模块路径

比如上面在“一级包”下运行时,运行目录为:一级包

引用的模块“甲”的路径为:一级包/二级包/甲

那么包路径就要:二级包/甲(代码中是 using 二级包.甲

这样的包路径设定规则比较直观,但也意味着,对于存在引用的模块,必须在一个特定目录下运行,在任何其他目录下运行都会出现无法找到模块的错误。

下面是 0.0.15.1 版重现的几个小功能:

  • throw 语法,对应 Python 的 raise
  • isa 内置函数,对应 Python 的 isinstance
  • 改进部分报错信息

文档方面,为便于有意者参与木兰项目的开发维护,编写了开发流程与项目结构简介,今后逐步完善。另开始小结与 Python 的语法对比


附:代码量统计

主要部分的代码行数统计,格式为:上次->现在。

  • 木兰代码量 3260 -> 3307
    • 运行环境,实现与测试大部为木兰代码:582
    • 木兰测试用例,包括部分实用小程序(如井字棋):2678 -> 2725 (报错信息测试用例替代了源码中的注释)

 

  • Python 代码量(木兰实现与测试框架):2721 -> 2920
    • 分析器/语法分析器.py:1015 -> 1021
    • 分析器/词法分析器.py:207 -> 213
    • 分析器/语法树.py:202 -> 209
    • 环境.py,定义全局方法:172 -> 174
    • 测试/期望值表.py(从“运行所有.py”中提取):131 -> 133
    • 功用/规律.py,正则表达式 API 原型:100
    • 分析器/语法成分.py,从语法分析器中提取出来的枚举常量:82 -> 83
    • 功用/反馈信息.py:71 -> 75
    • 测试/运行所有.py,检验所有木兰测试代码片段:62 -> 71
    • 未变
      • 交互.py,交互环境(REPL):148
      • 中.py,主程序:74
      • 功用/调试辅助.py,:57
      • setup.py, 34
      • 测试/unittest/语法树.py,确保生成的语法树与原始版本一致:88
      • 测试/unittest/正则.py:62
      • 测试/unittest/交互.py,交互环境相关测试:28
      • 测试/unittest/所有用例.py:24
      • 分析器/错误.py:26
原文链接:https://www.oschina.net/news/123515
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章