【发布时间】:2019-12-13 03:16:17
【问题描述】:
来自 C++ 世界,我习惯于基于在编译时使用 CMake 等工具确定的标志来编写条件编译。我想知道模仿此功能的最 Pythonic 方式是什么。例如,这是我当前根据是否找到模块设置的:
import imp
try:
imp.find_module('petsc4py')
HAVE_PETSC=True
except ImportError:
HAVE_PETSC=False
然后我可以在其余的 Python 代码中使用HAVE_PETSC。这可行,但我想知道这是否是在 Python 中执行此操作的正确方法。
【问题讨论】:
-
为什么使用
imp而不仅仅是import petsc4py并在没有找到异常的情况下捕获异常? -
根据我的经验,“Pythonism”通常更喜欢“请求宽恕而不是请求许可”而不是“先看再跳”,所以正如@khelwood 所说,你会使用 try-except。虽然如果你实际上不需要使用
petsc4py,也许你的代码是 Pythonic,idk。
标签: python conditional-statements