【发布时间】:2021-07-23 05:46:35
【问题描述】:
关于 Python 中长导入语句的最佳实践是什么? Pep 8 允许 72-99 个字符长的行,但我发现我经常超过这个限制,当我努力格式化我的其余代码时,这是一种耻辱。
一些团队非常喜欢更长的线路长度。对于维护的代码 完全或主要由可以就此达成协议的团队 问题,可以将行长限制增加到99 字符,前提是 cmets 和 docstrings 仍然包裹在 72 个字符。
来源:https://www.python.org/dev/peps/pep-0008/
当然,您可以只导入整个包。即import numpy as np,但我通常希望尽可能缩短导入时间以避免减少加载时间。
【问题讨论】:
-
除非您使用 Java 命名约定 (
CookieFactoryInterfaceFactoryMaker),否则我认为没有一个合理的用例让您拥有如此长的 import 语句/模块名称。能举个例子吗? -
“当然,您可以只导入整个包。即,将 numpy 导入为 np,但是我通常希望尽可能缩短导入时间以避免减少加载时间。”等等,什么?你认为你在做什么可以减少加载时间?
-
@DeepSpace,当然,看下面的例子: from samplecode_server.backendstats.probabilistic_serializers import MultidimensionalSerializer, ProbabilisticSerializer
-
@juanpa.arrivillaga,也许我的知识有差距。将库导入代码库不会增加执行时间吗?而且像 import numpy 这样的东西不是比 from numpy.linalg import norm 更贵吗?
-
@CroissantEngineer 没有。它不是。你永远不能只导入一个模块的一部分,你总是导入整个东西。唯一改变的是当前命名空间中的内容。即,
import my_module和from my_module import SomeClass* 都执行整个my_module.py。唯一的区别是模块对象my_module被添加到命名空间中,另一方面,它实际上等效于import my_module; MyClass = my_module.MyClass; del my_module。你没有保存任何东西