def fib_r(n, memo={0: 0, 1: 1}):
"""recursive fibonacci numbers generation with memoisation
>>> [fib_r(n) for n in range(10)]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
>>> fib_r(100)
354224848179261915075"""
if n not in memo:
memo[n] = fib(n - 1) + fib(n - 2)
return memo[n]
上面的 doctest 在 python 3 上通过,但在 2.x 上失败,如下所示:
**********************************************************************
File "euler.py", line 93, in __main__.fib
Failed example:
fib_r(100)
Expected:
354224848179261915075
Got:
354224848179261915075L
这只是一个例子,我在其他几种情况下也见过这种情况(例如,unicode 字符串是否有u
前缀与否)。我想知道是否有一个选项doctest
像这样忽略 python 2 和 3 之间的细微差异?
我并不是在寻找一种解决方法来修改测试本身,以便尽管有限制它仍然可以工作。我只是想知道是否有一个标志或其他东西可以允许对 python 版本中已更改的这些小事情的兼容性进行一些宽大处理。