治疗导入函数重写冲突的最具pythonic的方法

2024-03-29 06:49:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在导入两个不同的模块,它们都覆盖了标准的数学函数,例如log()。我有几种不同的方法来解决这场冲突。哪一个最像Python?你知道吗

方案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:

???

Tags: 模块fromimportlog标准vardefenviron
2条回答

不要使用from something import *。使用import somethingfrom something import foo, bar, ...。你知道吗

如果要以第二种方式导入函数,并从两个不同模块导入两个同名函数,可以编写:

from module_a import log as a_log
from module_b import log as b_log

正如pm2ring在注释中指出的,您还可以使用as将模块重命名为较短的名称,以保持层次结构:

import module_a as ma
import module_b as mb
...
ma.log(...)

只需导入模块并给出清晰简短的名称,例如:

import pyomo.environ as omo
import casadi

def coolFunction():
    pyomo_x = omo.Var()
    pyomo_f = omo.log(x)

def niceFunction():
    casadi_x = casadi.SX.sym('x')
    casadi_f = casadi.log(x)

不要在函数内部使用from xy import *或导入。您应该始终立即看到,导入了哪些名称,模块具有哪些依赖项。你知道吗

相关问题 更多 >