>> my_function(b'\0') '6e340b9cffb37a989ca5-6ren">
gpt4 book ai didi

python - 包含反斜杠字符的文档字符串的问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:16 26 4
gpt4 key购买 nike

import hashlib


def my_function(bytes_):
"""
>>> my_function(b'\0')
'6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d'
"""
return hashlib.sha256(bytes_).hexdigest()


if __name__ == "__main__":
import doctest
doctest.testmod()

预期行为: 1 次测试通过

实际行为: ValueError 异常是从 doctest.py 中引发的。

ValueError: source code string cannot contain null bytes

我也尝试过使用 b'\x00' 字面值,但结果相同。如何在 doctest 中使用空字节?这里的问题到底是什么,是否有任何修复或不太难看的解决方法?

最佳答案

您的 doctest 正在被双重解析。首先,Python 应用反斜杠处理将 \0 转换为 docstring 本身中的空字节,然后 doctest 尝试运行 >> 作为 Python 代码并遇到错误,因为已经应用了反斜杠处理。

对于任何试图打印您的文档字符串或试图调用您的函数的help 的人来说,这也是一个问题。

与正则表达式一样,为了避免第一层反斜杠处理,使用原始字符串表示法:

def my_function(bytes_):
r"""
>>> my_function(b'\0')
'6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d'
"""
return hashlib.sha256(bytes_).hexdigest()

关于python - 包含反斜杠字符的文档字符串的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44296354/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com