我最近浏览 pycparser 的代码,看到了一些像这样的函数:
def t_CPP_WS(t):
r'\s+'
t.lexer.lineno += t.value.count("\n")
return t
r'\s+'
是如何工作的?没有函数调用(例如re.match
)或任何包装或使用它的东西。我对 python 的经验很少(主要是 javascript),但这不会被忽略吗?
最佳答案
答案分为两部分:
通常在 Python 中,您是对的:未分配给变量或传递给产生某种副作用的函数或方法的字符串不会产生任何总体效果。但是,如果 Python 函数中的第一个语句是字符串文字,则该字符串将成为该函数的文档字符串 a special property that Python functions can possess .
PycParser 库中提供的代码不是纯 Python,而是使用 PLY 库,该库使用 Python 文档字符串来定义功能 2 .
因此,提供的代码为函数的文档字符串分配一个值,然后 PLY 库使用该文档字符串。
关于python - 在函数中用作丢弃语句的原始正则表达式字符串,其值被丢弃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75700168/