我最近浏览了pycparser的代码,看到了一些如下所示的函数:
def t_CPP_WS(t):
r'\s+'
t.lexer.lineno += t.value.count("\n")
return t
r'\s+'
是如何工作的?没有函数调用(例如re.match
)或任何围绕或使用它的东西.我几乎没有使用Python(主要是Java脚本)的经验,但这不会被忽略吗?
我最近浏览了pycparser的代码,看到了一些如下所示的函数:
def t_CPP_WS(t):
r'\s+'
t.lexer.lineno += t.value.count("\n")
return t
r'\s+'
是如何工作的?没有函数调用(例如re.match
)或任何围绕或使用它的东西.我几乎没有使用Python(主要是Java脚本)的经验,但这不会被忽略吗?
答案分为两部分:
通常,在Python语言中,您是对的:没有赋值给变量或传递给函数或方法的字符串不会产生任何整体效果.但是,如果Python函数中的第一条语句是字符串文字,则该字符串将成为该函数的文档字符串a special property that Python functions can possess.
在该PycParser库中提供代码不是纯的Python,而是使用库的层,该库层使用Python文档字符串来定义功能2.
因此,所提供的代码为函数的文档字符串赋值,然后PLY库使用该文档字符串.