Python:从外部模块导入多个方法

时间:2017-12-09 10:13:47

标签: python

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




 来自os.path import join&# xA;来自os import listdir,getcwd
  




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




1 个答案:

答案 0 :(得分:0)

关于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例如规定使用多行进行多次导入,即使你可以简洁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是最有意义的,至少对我而言。