【发布时间】:2018-02-19 03:00:32
【问题描述】:
我偶然发现了 Python 的一个有趣且意想不到的特性:
def fun():
"""Foo’s docstring"""
是一个有效的函数吗?根据PEP 257,“文档字符串是作为模块、函数、类或方法定义中的第一条语句出现的字符串文字”意味着文档字符串本身被视为语句? p>
我原以为这里至少需要一个pass 语句。上面的示例与“显式优于隐式”的Python Zen 相矛盾,因为pass 声明了明确的意图,而文档字符串则没有。
任何人都可以阐明其意图吗?
【问题讨论】:
-
什么不清楚?正如那句话告诉你的那样,字符串是第一个语句,the grammar 只需要一个语句来使函数在语法上有效。换句话说,这不是一个空函数。
-
“意图”到底是什么意思?
-
我已经扩展了这个问题...
-
Python之禅并没有告诉你语法。如果您认为 docstring 之后的
pass语句使代码的意图更清晰,那么请务必添加一个,但运行代码不是 必需 的。要求suite至少包含一个语句只会使解析器复杂化,除非它在funcdef中并且第一个语句是字符串文字,在这种情况下它必须包含至少两个。 “简单胜于复杂。” -
你是什么意思“当放置在某个位置时考虑了一个声明”?字符串文字本身就是一个表达式,因此是一个表达式语句。当这样的语句是函数/类/模块/方法中的第一个语句时,它也作为文档字符串的特殊情况并不会改变这一点。
标签: python python-3.x