【问题标题】:Python: Importing multiple methods from external modulePython:从外部模块导入多个方法
【发布时间】:2017-12-09 18:47:32
【问题描述】:

对于非常常见的 Python 模块,我发现使用 from .. import 语句进行导入大大提高了我的代码的可读性,因为我可以按名称引用方法而无需点符号。但是,在某些模块中,我需要的方法嵌套不同,例如在os

from os.path import join
from os import listdir, getcwd

为什么from os import path.join, listdir, getcwd 不起作用?以更简洁的方式导入我需要的所有方法的“pythonic”方式是什么?

【问题讨论】:

    标签: python


    【解决方案1】:

    关于from <module> import <identifier> 是否是Pythonic 本身的观点是相当分裂的——它隐藏了一个方法的起源,所以仅仅通过阅读就很难弄清楚某个变量/函数的来源编码。另一方面,它减少了一些人认为 Pythonic 的冗长,即使它没有明确规定。无论哪种方式,Pythonic 都是一个难以捉摸的术语,因为它通常意味着“我认为 Python 代码应该看起来像”支持几个 PEP 和晦涩的邮件列表帖子,同时方便地省略了那些违背 Pythonic 概念的帖子。

    from os import path.join 不起作用,因为os 定义了os.path 模块(通过直接写入所有事物的sys.modules),它不是os 模块中的标识符本身。然而,pathos 模块中的标识符,指向os.path 模块,因此您可以使用from os import pathfrom os.path import join

    最后,简洁Pythonic不是同义词,事实上PEP 8例如规定使用多行进行多次导入,即使你可以简洁 em>写import <module1>, <module2>, <module3> ...。它说可以像这样导入多个标识符,但是请记住,osos.path 是两个不同的模块,因此基于 PEP 8,它们不应位于同一行,因此应写为:

    from os import <identifier_1>, <identifier_2>
    from os.path import <identifier_3>, <identifier_4>
    

    现在,我会声称这是Pythonic,但它基于 PEP 8 是最有意义的,至少对我而言。

    【讨论】:

      猜你喜欢
      • 2015-11-27
      • 2021-03-07
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      • 2020-12-25
      • 1970-01-01
      相关资源
      最近更新 更多