我正在导入两个不同的模块,它们都覆盖了标准数学函数,例如日志()。我有几种不同的方法来解决这个冲突。哪个最像 pythonic?
选项 1:
from pyomo.environ import *
import casadi
def coolFunction():
pyomo_x = Var()
pyomo_f = log(x)
def niceFunction():
casadi_x = casadi.SX.sym('x')
casadi_f = casadi.log(x)
选项 2:
from pyomo.environ import *
def coolFunction():
pyomo_x = Var()
pyomo_f = log(x)
def niceFunction():
from casadi import *
casadi_x = SX.sym('x')
casadi_f = casadi.log(x)
选项 3:
???
请您参考如下方法:
不要使用from something import *。使用 import something 或 from something import foo, bar, ...。
如果你想以第二种方式导入函数,并且从两个不同的模块导入两个同名的函数,你可以这样写:
from module_a import log as a_log
from module_b import log as b_log
正如 PM 2Ring 在评论中指出的那样,您还可以使用 as 将模块重命名为更短的名称,以保持层次结构:
import module_a as ma
import module_b as mb
...
ma.log(...)
