python 3导入所有包与一部分

标签 python python-3.x import

我正在阅读 python 3.6 中 from … importimport ... 之间的区别。 经过多次搜索,我找不到我的具体问题的任何答案。

看下面的例子:

from urllib import request

import urllib

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

2) I 1 是正确的,假设我的 python 程序仅使用来自 urllibrequest 使用第一个而不是第二个会有任何性能优势吗?

最佳答案

它几乎完全取决于上下文、风格指南(例如 google style guide defines this )和开发人员,但我个人遵循一些指南。

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

    Explicit is better than implicit

  2. 如果您的依赖项/标准库中有不止一种同名用法。例如在 mathsecrets 模块中都有一个函数调用的选择,但只有 secrets 模块中的一个被设计用于密码学,因此最好import secrets 并使用secrets.choicemath.choice,这样您就知道自己在使用哪个。
  3. 如果您(或您的团队)使用不同的术语,最好使用 from module import function as blah。只要这个术语是一致的,这就是组织导入的好方法。例如,如果您的团队总是将 random.randint 称为 randy,您可以执行 from random import randint as randy(这是一个不好的例子,这正是我突然想到的),尽管这意味着您组织之外的任何人都不一定理解代码的作用。
  4. 不要使用 from module import * 这总是一个糟糕的想法,因为它会引入所有内容并且可能导致与文件内函数的名称冲突。
  5. 如果库中有您想使用的内置名称,那么使用 from module import blah 可以避免命名冲突。
  6. 这是一个有点迂腐的观点,老实说,除非您导入的东西数量多得离谱,否则这无关紧要,但导入选择函数实际上更快,因为 python 初始化解释器 session 的方式。不过,这只在大规模情况下才重要。

我可以继续说很久,但是@ Mayank提到这里已经发布了另一个好的答案:Use 'import module' or 'from module import'?

关于python 3导入所有包与一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61646585/

相关文章:

javascript - 如何从js文件中不导出任何内容?

python - 使用 Python 使用 DBus 监控 Clementine

python - 通过索引将数据从一个数据帧插入到另一个数据帧中

python - keras 卷积层中的内核大小是如何定义的?

python - 来自 Pandas 数据框的 json 文件中的正斜杠

xml - 如何将数据从XML文件插入3个不同的表中

Python:一步复制 panda 并替换特定列值

python - FastAPI 中的中间件,用于为每个请求生成 UUID 并发送到日志

Python Selenium 多处理

c# - 通过 C# DLL 导入 MapPoint 时遇到问题