web-dev-qa-db-ja.com

複数行のインポートに推奨される形式はありますか?

私はPythonで複数行のインポートをコーディングする3つの方法があることを読んだことがあります

スラッシュ付き:

from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \
    LEFT, DISABLED, NORMAL, RIDGE, END

複製された監視:

from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END

括弧付き:

from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
    LEFT, DISABLED, NORMAL, RIDGE, END)

このステートメントに推奨される形式またはよりエレガントな方法はありますか?

101
Manuel Alvarez

個人的には、複数のコンポーネントをインポートしてアルファベット順に並べ替える場合は括弧を使用します。そのようです:

from Tkinter import (
    Button,
    Canvas,
    DISABLED,
    END,
    Entry,
    Frame,
    LEFT,
    NORMAL,
    RIDGE,
    Text,
    Tk,
)

これには、各コミットまたはPRで追加/削除されたコンポーネントを簡単に確認できるという追加の利点があります。

全体的にそれは個人的な好みですが、私はあなたに最適に見えるもので行くことをお勧めします。

137
Brendan Maguire

あなたの例は PEP 328 に由来するようです。そこでは、括弧表記がまさにこの問題のために提案されているので、おそらく私はこれを選ぶでしょう。

14
Thorsten Kranz

PEP328 の括弧表記を使用し、括弧の前後に改行を追加します。

from Tkinter import (
    Tk, Frame, Button, Entry, Canvas, Text, 
    LEFT, DISABLED, NORMAL, RIDGE, END
)

これは Django が使用する形式です:

from Django.test.client import Client, RequestFactory
from Django.test.testcases import (
    LiveServerTestCase, SimpleTestCase, TestCase, TransactionTestCase,
    skipIfDBFeature, skipUnlessAnyDBFeature, skipUnlessDBFeature,
)
from Django.test.utils import (
    ignore_warnings, modify_settings, override_settings,
    override_system_checks, tag,
)
3
Max Malysh