gpt4 book ai didi

python - 在一系列 Python 版本中支持 unittest2 功能的最 pythonic 方式是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:00 25 4
gpt4 key购买 nike

我可以想到两种方法来确保我可以在各种 Python 版本中使用 unittest 库中的现代特性:

try:
from unittest2 import TestCase
except ImportError:
from unittest import TestCase

import sys
if sys.verson_info.major>=2 and sys.version_info.minor>=7:
from unittest import TestCase
else:
from unittest2 import TestCase

哪一个更像 Pythonic?

最佳答案

我会使用 try 语句。这是一个经常使用的成语。此外,您的 sys 版本对于 python3.3 是错误的:

>>> if sys.version_info.major>=2 and sys.version_info.minor>=7:
... from unittest import TestCase
... else:
... from unittest2 import TestCase
...
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
ImportError: No module named 'unittest2'

虽然它应该是:

>>> import sys
>>> major, minor = sys.version_info.major, sys.version_info.minor
>>> if (major >= 2 and minor >= 7) or (major >= 3 and minor >= 2):
... from unittest import TestCase
... else:
... from unittest2 import TestCase
...
>>>

这也表明 try 版本在 python 版本中更加健壮。

当我有一个用 C 编写的模块的“加速”版本时,我经常使用 try 变体,在文件末尾我放了一个:

try:
from _accelerated import *
except ImportError:
pass

用加速的实现覆盖 python 实现。

关于python - 在一系列 Python 版本中支持 unittest2 功能的最 pythonic 方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13344380/

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