我正在看某人的代码,这些代码在所有地方都有这种“docstrings”:
SLEEP_TIME_ON_FAILURE = 5
"""Time to keep the connection open in case of failure."""
SOCKET_TIMEOUT = 15
"""Socket timeout for inherited socket."""
...
根据Python文档,docstrings仅适用于模块,类或方法的开头.
上述非标准做法的含义是什么?为什么Python允许这个?这不会对性能产生影响吗?
解决方法:
就Python而言,这些不是文档字符串.它们只是用作表达式语句的字符串文字.你可以这样做 – 你可以使用任何有效的Python表达式作为自己的语句. Python并不关心表达式是否真的有效.对于自己的一个字符串,唯一的性能影响是在字节码编译时非常少量的额外工作;在运行时没有任何影响,因为这些字符串得到了优化.
一些文档生成器会查看这些字符串.例如,非常常见的Sphinx autodoc扩展将解析这些字符串以记录它们正上方的任何内容.在更改代码之前,请检查是否使用了类似的内容.