我偶然发现了Python的一个有趣且意想不到的功能:
def fun():
"""Foo’s docstring"""
Run Code Online (Sandbox Code Playgroud)
是一个有效的功能?根据PEP 257," docstring是一个字符串文字,作为模块,函数,类或方法定义中的第一个语句出现 ",这意味着文档字符串本身被视为一个语句?
我原以为这至少pass需要一个声明.上面的例子与Python Zen的"显然优于隐式" 相矛盾,因为pass状态是显式意图,而文档字符串则不然.
任何人都可以对意图有所了解吗?
字符串文字与任何其他文字一样。如果您只输入一个整数,它也可以工作:
def func():
1
Run Code Online (Sandbox Code Playgroud)
但是,如果仅使用注释,则无法使用:
def func():
# test
# IndentationError: expected an indented block
Run Code Online (Sandbox Code Playgroud)
即使它也作为文档字符串添加(保存在__doc__属性中),它也是一个函数级常量:
def func():
"""I'm a function"""
>>> func.__code__.co_consts
("I'm a function", None)
Run Code Online (Sandbox Code Playgroud)
因此,仅作为函数内容的字符串文字的存在不会改变函数实际上是如何 “解析”和“编译”自身的。好吧,除了它还具有not-None __doc__属性。
实际上,它对于abstractmethods 非常方便(请参见“ Python中的抽象方法的主体”),在这里您不需要实际的函数体。
| 归档时间: |
|
| 查看次数: |
687 次 |
| 最近记录: |