将模块传递给 python 中的调用函数
Pass a module to a called function in python
我有以下问题:
假设我有一个文件 function.py
包含:
def get_mean(nums):
return np.mean([nums])
和包含以下内容的文件 launcher.py
:
from function import get_mean
mean = get_mean([1, 2, 3])
print(mean)
现在,如果您启动 python launcher.py
,它将抛出 NameError: name 'np' is not defined
。
我的问题是:有没有办法通过从 launcher.py
调用函数 get_mean
而无需编辑文件 function.py
?
背景故事:第三方库在这里有一个函数 function.py
表示错误导入,我必须在我的代码中使用 launcher.py
表示的函数,但我没有不知道怎么做。
不编辑是不可能的function()
,因为文件已经有错误(np未定义)。
但是,你可以试试 function.py:
def get_mean(nums):
import numpy as np
return np.mean([nums])
您也可以从启动器发送 np 以像这样运行:
#function.py
def get_mean(nums, np):
return np.mean([nums])
#launcher.py
import numpy as np
from function import get_mean
mean = get_mean([1, 2, 3],np)
print(mean)
这两个都有这个输出:
2.0
可以通过一个奇怪的技巧来做到这一点
import numpy as np
import function
function.__dict__["np"] = np
function.get_mean([1, 2, 3])
您正在定义未定义的模块,方法是将其添加到 functions
模块的 __dict__
中。
这不是一种非常干净的做事方式,但这是我这边唯一可用的方法
我有以下问题:
假设我有一个文件 function.py
包含:
def get_mean(nums):
return np.mean([nums])
和包含以下内容的文件 launcher.py
:
from function import get_mean
mean = get_mean([1, 2, 3])
print(mean)
现在,如果您启动 python launcher.py
,它将抛出 NameError: name 'np' is not defined
。
我的问题是:有没有办法通过从 launcher.py
调用函数 get_mean
而无需编辑文件 function.py
?
背景故事:第三方库在这里有一个函数 function.py
表示错误导入,我必须在我的代码中使用 launcher.py
表示的函数,但我没有不知道怎么做。
不编辑是不可能的function()
,因为文件已经有错误(np未定义)。
但是,你可以试试 function.py:
def get_mean(nums):
import numpy as np
return np.mean([nums])
您也可以从启动器发送 np 以像这样运行:
#function.py
def get_mean(nums, np):
return np.mean([nums])
#launcher.py
import numpy as np
from function import get_mean
mean = get_mean([1, 2, 3],np)
print(mean)
这两个都有这个输出:
2.0
可以通过一个奇怪的技巧来做到这一点
import numpy as np
import function
function.__dict__["np"] = np
function.get_mean([1, 2, 3])
您正在定义未定义的模块,方法是将其添加到 functions
模块的 __dict__
中。
这不是一种非常干净的做事方式,但这是我这边唯一可用的方法