python - 函数中未赋值的表达式
问题描述
我正在阅读 Beazley 和 Jones 的“Python Cookbook”,我遇到了以下代码:
# Token processing functions
def t_NUM(t):
r'\d+'
t.value = int(t.value)
return t
我不明白的目的是什么r'\d+'
。上面的示例是我不希望任何人深入研究的较大代码的一部分。因此,请考虑以下 MRE:
def func():
1
这似乎是一个合法的功能,即使1
没有分配。那么,函数内部的这种语法/语句的意义何在?
解决方案
我不明白 r'\d+' 的目的是什么。
正如其他人所提到的,一般来说它是一个docstring,字符串附加到函数对象上,并且可以通过pydoc
/之类的工具或Sphinxhelp
之类的文档系统显示。
顾名思义,它是一个文档字符串,内容通常是对函数的目的和接口(输入/输出/异常)的解释,例如标准库中的这个示例。
文档字符串可以定义为 a class
or的第一个语句function
,位于模块的顶部(这些规则有点复杂),或者在一些赋值之后(“属性文档字符串”),尽管大多数工具在最后一个有问题一。
但是在这种特定情况下
上面的示例是较大代码的一部分 [...]
非常相关:这是一个使用ply的解析器示例 ,它利用文档字符串作为标记化模式。
使用函数时 [nb: tp 指定令牌],正则表达式规则在函数文档字符串中指定。该函数始终采用单个参数,它是 LexToken 的一个实例。
因此,对于这个特定的 Cookbook 片段,目的r'\d+'
不是文档,而是定义将哪种输入视为NUM
令牌。
推荐阅读
- javascript - 从快递发送 json 以做出反应的问题
- python - Python 串行通信 Arduino 导致的控制问题
- r - 我有一个描述历史数据预测的线图,我想将置信区间添加为阴影区域
- powershell - PowerShell 删除或跳过 CSV 中的列
- c# - 无法将“MongoDB.Bson.BsonArray”类型的对象转换为“MongoDB.Bson.BsonBoolean”类型
- java-8 - 基于可以为空的属性的对象列表分组
- apache-spark - Spark中的列乘法
- c++ - 是否可以让 GDB 只运行一个线程
- python - 带有正则表达式的连续单词
- reactjs - next.config.js 中的@babel/preset-react 未使用 babel-loader 加载