【问题标题】:Why fastbook (fast.ai) is using a star import?为什么 fastbook (fast.ai) 使用星号导入?
【发布时间】:2021-04-23 15:24:59
【问题描述】:

通常在 Python 中,建议不要进行“星号导入”(例如 from my_module import *)。

原因是它难以阅读、执行 linting,更糟糕的是可能导致名称冲突(更多关于 here)。

但是,通过使用fastbook 对 fast.ai 的所有文档和培训都使用以下几行:

import fastbook
fastbook.setup_book()

from fastbook import *

我们为什么要用import * 代替fastbook

改用import fastbook as fb 可行吗?

谢谢

【问题讨论】:

    标签: python import fast-ai


    【解决方案1】:

    据 fast.ai 创始人 Jeremy Howard 所说,如果您使用的是 jupyter notebook 这样的交互式工作环境,可以使用星形导入。以下是 Jeremy 在他的著作《Deep Learning for Coders With Fastai and Pytorch AI Applications without a PhD》中所说的:

    “许多 Python 编码人员建议避免像这样(使用 import * 语法)导入整个库,因为在大型软件项目中它可能会导致问题。但是,对于 Jupyter 笔记本等交互式工作,它效果很好。fastai 库是专门为支持这种交互使用而设计的,它只会将必要的部分导入您的环境。”

    【讨论】:

      【解决方案2】:

      他们可能只是在您所遵循的任何示例中都这样做,因为在示例中很容易将所有内容放入命名空间以使它们更紧凑

      不相关的Sympy docs 也因此显示通配符导入

      直接导入或命名都没有问题,您应该对任何共享代码执行此操作。

      他们的一个example notebooks 会按照您的预期进行导入

      import fastbook
      

      【讨论】:

      • 我和你有同样的感觉。我应该尝试使用正确的导入来运行示例。请注意,在您提供的示例中,您有import fastbook,但这是因为您只执行了fastbook.setup_book(),然后是from fastbook import *。我已经更新了问题
      猜你喜欢
      • 2021-06-21
      • 2021-09-21
      相关资源
      最近更新 更多