我最近浏览了pycparser的代码,看到了一些类似这样的函数:
def t_CPP_WS(t): r'\s+' t.lexer.lineno += t.value.count("\n") return t
r'\s+'是如何工作的?没有函数调用(例如re.match)或者任何围绕它的东西。我对python(主要是javascript)没有什么经验,但是这难道不会被忽略吗?
r'\s+'
re.match
jk9hmnmh1#
答案分为两部分:1.通常在Python中,你是对的:一个字符串如果没有赋值给变量,或者没有传递给会产生某种副作用的函数或方法,就不会产生任何整体效果,但是,如果Python函数中的第一条语句是字符串文字,那么这个字符串就会成为该函数的docstring,a special property that Python functions can possess。
1条答案
按热度按时间jk9hmnmh1#
答案分为两部分:
1.通常在Python中,你是对的:一个字符串如果没有赋值给变量,或者没有传递给会产生某种副作用的函数或方法,就不会产生任何整体效果,但是,如果Python函数中的第一条语句是字符串文字,那么这个字符串就会成为该函数的docstring,a special property that Python functions can possess。
因此,提供的代码为函数的文档字符串赋值,然后PLY库使用该文档字符串。