仅含文档字符串的空函数/方法在Python中是否合法?
代码合法性解释与PEP规范说明
为什么这段代码能正常运行?
- Python对函数/方法的要求是必须有合法的函数体,而文档字符串(docstring)本身就是一个合法的表达式语句。当函数/方法里只有docstring时,相当于函数体执行了一个字符串字面量(只是这个值没有被使用),完全符合Python的语法规则,不会触发语法错误。
__init__方法是空的也不影响类的实例化:Python中,类实例化时如果__init__没有额外逻辑,只是默认返回None,不会阻碍对象创建,所以a = A()能正常执行。- 代码最后调用
print('works'),这是明确的输出语句,所以运行后会打印works。
相关PEP规范说明
PEP 8(Python代码风格指南)不禁止这种只放docstring的空函数/方法,但不推荐这么写。规范里明确建议,对于空的函数、方法或类,应该使用pass语句来显式标记空实现,比如:
class A: def __init__(self): """ Some doc-string """ pass def some_method(self): """ Some other doc-string """ pass def say(): """ Well that's it, no doc-string """ pass
用pass的好处是更直观,能让其他开发者一眼就看出这是有意留空的实现,而不是遗漏了代码,提升代码可读性和维护性。
内容的提问来源于stack exchange,提问作者Yash Ranjan
相关产品推荐
相关产品推荐

