繁体   English   中英

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

[英]Python: Importing multiple methods from external module

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

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

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

关于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

最后, succinctPythonic不是同义词,实际上,例如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才最有意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM