python 3 导入所有包与导入一部分

4 python import python-3.x

from \xe2\x80\xa6 import我正在阅读 python 3.6与python 3.6 之间的差异import ...。\n经过多次搜索,我找不到我的具体问题的任何答案。

\n\n

看下面的例子:

\n\n
from urllib import request\n\nimport urllib\n
Run Code Online (Sandbox Code Playgroud)\n\n

1)它们相等吗?我认为从英语的基本含义来看,第一个仅导入request,第二个导入其中的所有内容urllib,包括request和许多其他内容。我对吗?

\n\n

2)我1是真的,假设我的python程序仅使用requesturllib使用第一个而不是第二个是否有任何性能优势?

\n

Kie*_*ood 5

它几乎完全取决于上下文、样式指南(例如谷歌样式指南定义了这一点)和开发人员,但我个人遵循一些准则。

  1. 如果您要导入的函数名称可以具有超过 1 个含义,请使用样式import module。例如,如果一个模块具有这样的名称,select()则可能意味着很多事情。如果它来自 sql 库,它可能是一个 select 语句,我也看到在接受用户输入等的库中使用了相同的名称。基本上遵循python 的禅宗

    显式优于隐式

  2. 如果您的依赖项/标准库中有多个同名用法。例如,在mathsecrets模块中都有一个名为 choice 的函数,但模块中只有一个函数secrets被设计用于密码学,因此最好import secrets使用 和secrets.choicemath.choice来代替,这样您就知道您正在使用哪一个。
  3. 如果您(或您的团队)使用不同的术语,那么这样做可能会更好from module import function as blah。只要该术语保持一致,这就是组织导入的好方法。例如,如果您的团队总是引用您可以做的事情random.randint(这是一个不好的例子,这只是我突然想到的),但这意味着您组织之外的任何人都不一定理解代码的作用。randyfrom random import randint as randy
  4. 不要使用from module import *这总是一个糟糕的主意,因为它带来了一切,并且可能导致与文件内函数的名称冲突。
  5. 如果库有您想要使用的内置名称,那么 usingfrom module import blah可以有效避免命名冲突。
  6. 这是一个有点啰嗦的观点,老实说,除非你导入了大量的东西,否则这并不重要,但导入选择函数实际上更快,因为 python 初始化解释器会话的方式。但这仅在大规模时才重要。

我可以继续说很长时间,但正如 @ Mayank提到的,这里已经发布了另一个很好的答案:使用“导入模块”或“从模块导入”?