Python 斯芬克斯博士在现实世界中的用途或意义是什么?

Python 斯芬克斯博士在现实世界中的用途或意义是什么?,python,python-sphinx,restructuredtext,Python,Python Sphinx,Restructuredtext,斯芬克斯中博士的意义是什么?有人能用一个简单的例子来帮助我理解它的用法吗。这里有一个简单的例子(来自: “”“ 这是“示例”模块。 示例模块提供一个函数factorial()。例如, >>>阶乘(5) 120 """ def阶乘(n): “”“返回n的阶乘,精确整数>=0。 如果结果足够小,可以放入一个int,则返回一个int。 否则返回一个长的。 >>>[范围(6)内n的阶乘(n)] [1, 1, 2, 6, 24, 120] >>>[范围(6)内n的阶乘(长(n)] [1, 1, 2, 6,

斯芬克斯中博士的意义是什么?有人能用一个简单的例子来帮助我理解它的用法吗。

这里有一个简单的例子(来自:

“”“
这是“示例”模块。
示例模块提供一个函数factorial()。例如,
>>>阶乘(5)
120
"""
def阶乘(n):
“”“返回n的阶乘,精确整数>=0。
如果结果足够小,可以放入一个int,则返回一个int。
否则返回一个长的。
>>>[范围(6)内n的阶乘(n)]
[1, 1, 2, 6, 24, 120]
>>>[范围(6)内n的阶乘(长(n)]
[1, 1, 2, 6, 24, 120]
>>>阶乘(30)
265252859812191058630848000000L
>>>阶乘(30L)
265252859812191058630848000000L
>>>阶乘(-1)
回溯(最近一次呼叫最后一次):
...
ValueError:n必须大于等于0
浮点数的阶乘是可以的,但浮点数必须是一个精确的整数:
>>>阶乘(30.1)
回溯(最近一次呼叫最后一次):
...
ValueError:n必须是精确的整数
>>>阶乘(30.0)
265252859812191058630848000000L
它也不能大得离谱:
>>>阶乘(1e100)
回溯(最近一次呼叫最后一次):
...
溢出错误:n太大
"""
输入数学
如果不是n>=0:
提升值错误(“n必须大于等于0”)
如果数学。楼层(n)!=n:
raise VALUERROR(“n必须是精确整数”)
如果n+1==n:#捕捉像1e300这样的值
提升溢流阀错误(“n太大”)
结果=1
系数=2
虽然因子这里有一个简单的例子(来自):

“”“
这是“示例”模块。
示例模块提供一个函数factorial()。例如,
>>>阶乘(5)
120
"""
def阶乘(n):
“”“返回n的阶乘,精确整数>=0。
如果结果足够小,可以放入一个int,则返回一个int。
否则返回一个长的。
>>>[范围(6)内n的阶乘(n)]
[1, 1, 2, 6, 24, 120]
>>>[范围(6)内n的阶乘(长(n)]
[1, 1, 2, 6, 24, 120]
>>>阶乘(30)
265252859812191058630848000000L
>>>阶乘(30L)
265252859812191058630848000000L
>>>阶乘(-1)
回溯(最近一次呼叫最后一次):
...
ValueError:n必须大于等于0
浮点数的阶乘是可以的,但浮点数必须是一个精确的整数:
>>>阶乘(30.1)
回溯(最近一次呼叫最后一次):
...
ValueError:n必须是精确的整数
>>>阶乘(30.0)
265252859812191058630848000000L
它也不能大得离谱:
>>>阶乘(1e100)
回溯(最近一次呼叫最后一次):
...
溢出错误:n太大
"""
输入数学
如果不是n>=0:
提升值错误(“n必须大于等于0”)
如果数学。楼层(n)!=n:
raise VALUERROR(“n必须是精确整数”)
如果n+1==n:#捕捉像1e300这样的值
提升溢流阀错误(“n太大”)
结果=1
系数=2

虽然factor我自己没有使用过,但据我所知,它扩展了
doctest
的功能。例如,它添加了
testsetup
testcleanup
指令,您可以将设置和拆卸逻辑放入这些指令中。使Sphinx能够在文档中排除该选项。

我自己没有使用过它,但据我所知,它扩展了
doctest的功能。例如,它添加了
testsetup
testcleanup
指令,您可以将设置和拆卸逻辑放入这些指令中。使Sphinx能够在文档中排除这些内容。

Sphinx的doctest用于测试文档本身。换句话说,它允许自动验证文档的示例代码。虽然它还可以验证Python代码是否按预期工作,但Sphinx本身并不需要(您可以更轻松地使用标准库的
doctest
模块)


因此,一个真实的场景(我发现自己经常遇到的场景)是这样的:一个新功能即将完成,所以我写了一些文档来介绍这个新功能。新文档包含一个或多个代码示例。在发布文档之前,我在Sphinx文档目录中运行
make doctest
,以验证我为观众编写的代码示例是否实际有效。

Sphinx的doctest用于测试文档本身。换句话说,它允许自动验证文档的示例代码。虽然它还可以验证Python代码是否按预期工作,但Sphinx本身并不需要(您可以更轻松地使用标准库的
doctest
模块)


因此,一个真实的场景(我发现自己经常遇到的场景)是这样的:一个新功能即将完成,所以我写了一些文档来介绍这个新功能。新文档包含一个或多个代码示例。在发布文档之前,我在Sphinx文档目录中运行
make doctest
,以验证我为读者编写的代码示例是否能够实际工作。

我不想要这个示例。我想了解它的真实世界usageI不想要这个例子。我想了解它的实际用途请澄清你的问题。从表面上看,拥有显示使用情况的文档也会推动测试——这似乎很有价值。请澄清您的问题。从表面上看,拥有显示使用情况的文档也会推动测试——这看起来很有价值。
"""
This is the "example" module.

The example module supplies one function, factorial().  For example,

>>> factorial(5)
120
"""

def factorial(n):
    """Return the factorial of n, an exact integer >= 0.

    If the result is small enough to fit in an int, return an int.
    Else return a long.

    >>> [factorial(n) for n in range(6)]
    [1, 1, 2, 6, 24, 120]
    >>> [factorial(long(n)) for n in range(6)]
    [1, 1, 2, 6, 24, 120]
    >>> factorial(30)
    265252859812191058636308480000000L
    >>> factorial(30L)
    265252859812191058636308480000000L
    >>> factorial(-1)
    Traceback (most recent call last):
        ...
    ValueError: n must be >= 0

    Factorials of floats are OK, but the float must be an exact integer:
    >>> factorial(30.1)
    Traceback (most recent call last):
        ...
    ValueError: n must be exact integer
    >>> factorial(30.0)
    265252859812191058636308480000000L

    It must also not be ridiculously large:
    >>> factorial(1e100)
    Traceback (most recent call last):
        ...
    OverflowError: n too large
    """

    import math
    if not n >= 0:
        raise ValueError("n must be >= 0")
    if math.floor(n) != n:
        raise ValueError("n must be exact integer")
    if n+1 == n:  # catch a value like 1e300
        raise OverflowError("n too large")
    result = 1
    factor = 2
    while factor <= n:
        result *= factor
        factor += 1
    return result


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