Python中如何保存自定义函数并在其他脚本中加载调用?
完全可以实现,下面是具体实现方法:
第一步:保存自定义函数
将你写好的dosomething函数完整代码存入你指定的路径/xxx/xxx/dosomething.py,替换示例中的占位逻辑即可,文件内容示例:
def dosomething(x): # 替换为你的实际业务逻辑 return x * 2
第二步:在新脚本中加载调用
有两种常用的实现方式,你可以按需选择:
方式1:添加搜索路径后导入
这是Python最常规的跨模块调用方法,操作简单不易出错:
import sys import os # 替换为你实际的dosomething.py文件路径 file = r"/xxx/xxx/dosomething.py" # 将函数文件所在的目录加入Python的模块搜索路径 sys.path.append(os.path.dirname(file)) # 直接导入目标函数 from dosomething import dosomething # 按你的需求调用即可 df = data df = df.apply(dosomething)
方式2:封装动态加载函数(符合你预期的调用写法)
如果你想要和你示例中load_function一致的调用形式,可以用importlib模块封装通用加载逻辑:
import os import importlib.util def load_function(path): # 从路径中提取文件名作为模块名 module_name = os.path.splitext(os.path.basename(path))[0] # 加载模块配置 spec = importlib.util.spec_from_file_location(module_name, path) # 初始化模块 func_module = importlib.util.module_from_spec(spec) # 执行模块内容 spec.loader.exec_module(func_module) # 返回目标函数,这里默认函数名和文件名一致,你也可以加参数自定义函数名 return getattr(func_module, "dosomething") # 调用逻辑和你预期的完全一致 file = r"/xxx/xxx/dosomething.py" dosomething = load_function(path=file) df = data df = df.apply(dosomething)
注意事项
- 保存函数的
.py文件如果有测试逻辑,一定要写到if __name__ == "__main__":代码块中,否则加载函数时测试逻辑会自动执行 - 如果你需要高频使用这个函数,可以把
/xxx/xxx/这个目录加入系统的PYTHONPATH环境变量,之后就不需要每次都加sys.path或者用动态加载逻辑,直接from dosomething import dosomething即可 - 路径填写时注意转义问题,Windows系统下的路径建议加
r前缀避免反斜杠转义报错
内容的提问来源于stack exchange,提问作者fred.schwartz
相关产品推荐
相关产品推荐

