138

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)

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

4

4 に答える 4

206

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

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

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

全体的には個人的な好みですが、自分に最も合うものを選ぶことをお勧めします。

于 2013-01-17T10:45:03.010 に答える
20

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

于 2013-01-17T10:35:41.023 に答える
8

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,
)
于 2017-02-19T14:20:31.870 に答える
-6

通常、Tkinterではfrom Tkinter import *、モジュールが明らかにウィジェットである名前のみをエクスポートするため、使用するだけで問題ありません。

PEP 8にはそのような場合の規則が記載されていないため、最適なオプションを決定するのはあなた次第だと思います。読みやすさがすべてなので、単一のモジュールからインポートしていることが明確になるものを選択してください。

これらの名前はすべてスコープ内で使用できるようになっているので、インポートされた名前が最もよく見えるので、オプション2が最も明確だと個人的に思います。次に、それをさらに分割して、互いに属する名前をグループ化することもできます。あなたの例ではTk、ウィジェットをグループ化するときにFrame別々に配置し、ビュー内の小さなコンポーネントであるために別々に配置することができます。CanvasButtonText

于 2013-01-17T10:34:37.780 に答える