我发现了 Python 的这个有趣功能,其中:
def do_nothing(): “”“什么也不做。”“”
与此相同: def do_nothing(): ...
我发现有人在这里评论了: “如果你给你的函数一个文档字符串,你甚至不需要在文档字符串后面放置任何语句。” Python 省略号何时比“pass”更受青睐?
有人可以解释为什么文档字符串充当空操作吗?
我搜索了python语言参考,发现python的函数定义要求函数体有一个语句。 我查看了 CPython 中的语句定义,没有看到任何对省略号或文档字符串的引用作为有效语句: https://docs.python.org/3/reference/compound_stmts.html
函数确实需要函数体。在第一个示例中,主体是字符串文字。它是“文档字符串”不是形式语法的问题,而是依赖于上下文的传统解释的问题。在第二个示例中,主体是一个
Ellipsis
对象
>>> ...
Ellipsis
>>> type(_)
<class 'ellipsis'>
出于完全相同的原因,这些也是有效的函数定义:
def f(): {}
def f(): 88
def f(): 3.14159
def f(): 1 < 2
def f(): pass
任何类型的语句都是必要且充分的,即使执行该语句没有效果。后者是语义问题而不是语法问题。语法不会(也不能)强制代码执行一些明智的操作。