簡體   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