为什么 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 库是专门为支持这种交互式使用而设计的,它只会将必要的部分导入到您的环境中。"
通常在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 库是专门为支持这种交互式使用而设计的,它只会将必要的部分导入到您的环境中。"