根据可用的库执行代码

时间:2013-02-28 23:24:49

标签: python

假设我有一个功能:

 def mean(data):
     return sum(data)/len(data)

现在,如果在系统上你有numpy,最好将其定义为:

def man(data):
     return np.mean(data)

如果你有高级库numexpr,最好这样做:

def mean(data):
     return ne.evaluate("sum(data)") / len(data)

现在......我想使用之前的一个,这取决于一个库是否可用的事实。在python中有什么更好的方法?例如在c / c ++中,我会使用像

这样的宏
#ifdef HAS_NUMPY
...
#elseif HAS_NUMEXPRE
...

1 个答案:

答案 0 :(得分:4)

try:
   import numpy as np
   HAS_NUMPY = True
except ImportError:
   HAS_NUMPY = False

try:
   import numexpr as ne
   HAS_NUMEXPR = True
except ImportError:
   HAS_NUMEXPR = False


if HAS_NUMPY:
    mean = np.mean
elif HAS_NUMEXPR:
    def mean(data):
        return ne.evaluate("sum(data)") / len(data)
else:
    def mean(data):
        return sum(data)/len(data)