这个问题更多的是与各位读者分享一些东西。 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>))
我再次重申,这并不理想;然而,有时您需要像上面的用例一样这样做。
TLDR;
def foo():
import <package_name>
globals.update(vars(<package_name>))