[英]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
模块本身的标识符。 但是, path
是os
模块中指向os.path
模块的标识符,因此您可以from os import path
或from os.path import join
。
最后, succinct和Pythonic不是同义词,实际上,例如PEP 8规定使用多行进行多次导入,即使您可以简洁地编写import <module1>, <module2>, <module3> ...
它说可以导入多个这样的标识符,但是,请记住os
和os.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.