Skip to main content
 首页 » 编程设计

Python:从具有所需模块的 .py 文件导入函数

2025年05月04日13mfryf

我正在尝试做一些相当简单的事情。我想从 .py 文件导入一个函数,但使用在我的主脚本中导入的模块。例如存储以下函数

./files/sinner.py

def sinner(x): 
  y = mt.sin(x) 
  return y 

然后我想使用数学作为 mt 来运行 sinner

from sinner import sinner 
import math as mt 
sinner(10) 

这并不奇怪会抛出一个错误

--------------------------------------------------------------------------- 
NameError                                 Traceback (most recent call last) 
<ipython-input-3-50006877ce3e> in <module>() 
      2 import math as mt 
      3  
----> 4 sinner(10) 
 
/media/ssd/Lodging_Classifier/sinner.py in sinner(x) 
      1 import math as mt 
----> 2  
      3 def sinner(x): 
      4   y = mt.sin(x) 
      5   return y 
 
NameError: global name 'mt' is not defined 

我知道如何在 R 中处理这个问题,但在 Python 中不知道。我错过了什么?

请您参考如下方法:

sinner.py 命名空间中不存在 math 模块。与 R 不同,导入的模块或包不跨越全局命名空间。您需要在 sinner.py 文件中导入 math:

import math as mt 
 
def sinner(x): 
  y = mt.sin(x) 
  return y 

或者(我真的不知道你为什么要这样做),你可以将模块作为参数传递给 sinner 函数:

def sinner(mt, x): 
  y = mt.sin(x) 
  return y 

然后您可以传递实现 sin 函数的不同模块:

from .sinner import sinner 
import math as mt 
import numpy as np 
sinner(mt, 10) 
sinner(np, 10)