其实有一种方法可以在函数层面导入*

问题描述 投票:0回答:1

这个问题更多的是与各位读者分享一些东西。 Python 中不允许在函数内执行 import *,这通常是一种不好的做法。然而,有时您实际上需要这样做是为了让您的生活更轻松,而不是处理以下错误:

SyntaxError: import * only allowed at module level

一个示例用例(准确地说是我的用例)是使用 kubeflow 组件构建通用 MLOps 管道,该组件理想情况下仅运行各种 ML 对象的 .predict 函数 - 来自 scikit learn ,到 xgboost,甚至到云原生的东西。为了对此用例添加另一个警告,我正在加载 ML 对象的 pickle 文件。列出每个包裹将是令人厌烦和痛苦的。因此在这种情况下,我确实需要 import * 功能在我的函数中工作。

而且,您可能也遇到过类似的情况。

好吧,这是为大家解决这个问题的解决方案:

def foo(): 
    import <package_name> 
    globals.update(vars(<package_name>))

我再次重申,这并不理想;然而,有时您需要像上面的用例一样这样做。

python kubeflow-pipelines mlops
1个回答
0
投票

TLDR;

def foo(): 
    import <package_name> 
    globals.update(vars(<package_name>))

© www.soinside.com 2019 - 2024. All rights reserved.