为什么 fastbook (fast.ai) 使用 star 导入?

Why fastbook (fast.ai) is using a star import?

通常在Python,建议永远不要做“明星导入”(例如from my_module import *)。

基本原理是它使阅读、执行 linting 变得困难,更糟糕的是可能导致名称冲突(更多关于此 here)。

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

import fastbook
fastbook.setup_book()

from fastbook import *

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

改为 import fastbook as fb 的可行性如何?

谢谢

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

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

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

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

import fastbook

根据 fast.ai 的创始人 - Jeremy Howard 的说法,如果您使用像 jupyter notebook 这样的交互式工作环境,那么使用 star import 是可以的。以下是 Jeremy 在他的书“Deep Learning for Coders With Fastai and Pytorch AI Applications without a PhD”一书中所说的:

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