【问题标题】:Most pythonic way to import all objects in a module as their name in the module将模块中的所有对象作为它们在模块中的名称导入的最pythonic方法
【发布时间】:2013-12-10 01:03:57
【问题描述】:

当您导入一个模块时,python 通过将该模块中的所有对象导入为module.objectname 而不是objectname 来保护命名空间。 import module.objectname as objectname 会将对象作为其原始名称导入模块中,但是以这种方式写出每个对象对于大型模块来说是乏味的。将模块中的所有对象作为它们在模块中的名称导入最pythonic的方法是什么?

【问题讨论】:

  • 您也可以为模块名称选择一个简短的别名,例如import matplotlib as mpl,因此您可以调用mpl.whatever而不是输入全名

标签: python python-import


【解决方案1】:

这将从模块中导入所有内容作为它们的名称:

from module import *

但这并不是一个很好的做法。仅导入真正需要的内容并为您的代码使用PEP8 测试。

【讨论】:

  • 总的来说,我同意这是不好的做法,尤其是对于包。但是,将您自己的项目代码拆分为两个文件会非常有帮助,一个定义您的函数,另一个为手头的特定任务调用这些函数。
  • 我们有时也会使用它,例如__init__.py 等,但在常规文件中我更喜欢写出导入,这样我的 linter 可以在某些内容丢失或导入但未使用时警告我。
【解决方案2】:

你只需要使用这个表格

import module.objectname as objectname

如果您希望将对象名别名为不同的名称

通常你说

from module import objectname, objectname2, objectname3

没有“Pythonic”方式来导入所有对象,因为不鼓励from module import *(导致代码脆弱)所以很难被称为 Pythonic

【讨论】:

    猜你喜欢
    • 2011-09-16
    • 2020-07-15
    • 2013-09-27
    • 2020-09-01
    • 2011-04-16
    • 2013-07-21
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    相关资源
    最近更新 更多