Skip to main content
 首页 » 编程设计

python之处理导入函数覆盖冲突的大多数 pythonic 方法

2025年05月04日13zhwl

我正在导入两个不同的模块,它们都覆盖了标准数学函数,例如日志()。我有几种不同的方法来解决这个冲突。哪个最像 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(...)