函数下添加docstring后返回docstring而非预期结果,是什么原因?
问题原因
该问题由代码格式错误导致,正常编写的docstring本身不会影响函数运行逻辑:
- 第一种常见错误:你将函数的业务逻辑代码写在了docstring的三引号内部,相当于所有逻辑都被包裹进了docstring,此时函数体内只有docstring这一个字符串,自然会返回docstring而非执行预期逻辑。删除docstring后包裹的代码变成了正常的函数逻辑,就可以正常运行。
- 第二种常见错误:docstring写完后的业务代码缩进层级和
def定义行平级,没有被划入函数体范围,此时函数的有效内容只有docstring,也会出现返回docstring的问题。
正确写法示例
def 函数名(参数): """此处写docstring内容,仅作为说明文档""" # 业务代码和docstring保持相同缩进,属于函数体内容 你的业务逻辑 return 预期返回值
验证方法
你可以执行print(你的函数名.__doc__),如果输出内容里包含你写的业务逻辑代码,就说明你误将代码写进了docstring的引号内部。
内容的提问来源于stack exchange,提问作者Guacaka283
相关产品推荐
相关产品推荐

