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

栏目: 软件资讯 · 发布时间: 4年前

内容简介:这几天在用木兰语言继续改写 Python 文字冒险游戏例程时,又体验到引用模块时使用的包路径与 Python 的差别,之前虽然写过相关测试但未整理成文档,在此小结一下。 以下面的文件目录为例(注意:不需在包目录中添...

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Iterative Methods for Sparse Linear Systems, Second Edition

Iterative Methods for Sparse Linear Systems, Second Edition

Yousef Saad / Society for Industrial and Applied Mathematics / 2003-04-30 / USD 102.00

Tremendous progress has been made in the scientific and engineering disciplines regarding the use of iterative methods for linear systems. The size and complexity of linear and nonlinear systems arisi......一起来看看 《Iterative Methods for Sparse Linear Systems, Second Edition》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试