【问题标题】:What is the string following the "def" on Python? (not the docstring)Python上“def”后面的字符串是什么? (不是文档字符串)
【发布时间】:2012-12-11 15:40:48
【问题描述】:

我正在 Udacity 上观看 CS262 的视频,我对这种程序定义感到困惑:

def t_WORD(token):
    r'[^ <>]+' # any reg. exp. ruleset is placed here
    # ... more processing
    # ... more processing
    return token

此代码使用库 ply (.lex)

我有一些 Python 经验和知识,但是我对过程定义行之后的第一行感到很困惑。

Python 解释器如何使用、解释或访问该字符串(reg. exp. string)?它只是一个没有分配变量的字符串。

我已经完成了通常的 Google 和 SO 搜索,但找不到实际内容。

提前感谢您的所有回答和解释。

【问题讨论】:

标签: python python-2.7 docstring


【解决方案1】:

该字符串是文档字符串,可通过t_WORD.__doc__ 访问。 PLY 库使用它为函数分配规则。

在这种情况下,PLY 将文档字符串用于自己的目的。该字符串分配给__doc__ 属性,任何人都可以读取该字符串。在这种情况下,PLY 使用它来构造解析器。

【讨论】:

  • 您的回答完全正确 (+1)。这是否意味着如果您使用python -OO,PLY 会中断?对我来说,这似乎是一个非常不稳定的程序设计......
  • 我想会的。在任何情况下,我都不喜欢以这种方式重载文档字符串的含义。
  • @mgilson 很好的观察。如果有人不能回答,你可以试试(不幸的是我的 PLY 安装不工作)。 否则我会问一个问题(在等待 ned/you/phil 回答之后
  • +1,我自己在解释器中检查了它——出于某种原因,我认为文档字符串必须用三引号定义;我从未见过有人为此使用单引号或实字符串...
  • @pranshus -- 我什至不知道 PLY 是什么 :-p ......所以我不会冒险尝试......我只是好奇,因为我听说过之前,所以它必须至少是一个相当大的问题,这似乎是一个有问题的设计决定。
猜你喜欢
  • 2015-08-15
  • 2020-09-25
  • 2022-01-21
  • 1970-01-01
  • 2013-01-12
  • 1970-01-01
  • 1970-01-01
  • 2010-09-27
  • 2011-04-23
相关资源
最近更新 更多