Czy istnieje zalecany format importu wielowierszowego?
Przeczytałem, że istnieją trzy sposoby kodowania importu wielowierszowego w Pythonie
Z ukośnikami:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \
LEFT, DISABLED, NORMAL, RIDGE, END
Duplikacja wysłanych:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END
W nawiasie:
from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END)
Czy istnieje zalecany format lub bardziej elegancki sposób na te stwierdzenia?
4 answers
Osobiście używam nawiasów przy importowaniu więcej niż jednego komponentu i sortuję je alfabetycznie. Tak:
from Tkinter import (
Button,
Canvas,
DISABLED,
END,
Entry,
Frame,
LEFT,
NORMAL,
RIDGE,
Text,
Tk,
)
Ta dodatkowa zaleta polega na łatwym sprawdzaniu, jakie komponenty zostały dodane / usunięte w każdym commicie lub PR.
Ogólnie rzecz biorąc, jest to osobiste preferencje i radzę Ci wybrać to, co wygląda najlepiej dla Ciebie.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-09 11:20:17
Twoje przykłady wydają się wynikać z PEP 328 . Tam, nawias-notacja jest proponowana dla dokładnie tego problemu, więc prawdopodobnie wybrałbym ten.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-17 10:35:41
Wybrałbym notację w nawiasie z PEP328 z nowymi liniami dodanymi przed i po nawiasach:
from Tkinter import (
Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END
)
Jest to format, który Django używa:
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,
)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-19 14:20:31
Zazwyczaj z Tkinter, jest w porządku po prostu używać from Tkinter import *
jako moduł będzie eksportować tylko nazwy, które są wyraźnie widżety.
PEP 8 nie wymienia żadnych konwencji dla takiego przypadku, więc myślę, że to do ciebie należy decyzja, która jest najlepsza opcja. Chodzi o czytelność, więc wybierz to, co sprawia, że jest jasne, że importujesz rzeczy z jednego modułu.
Ponieważ wszystkie te nazwy są dostępne w Twoim zakresie, osobiście uważam, że opcja 2 jest najbardziej przejrzysta jak ty można zobaczyć importowane nazwy najlepiej. Następnie można nawet podzielić go bardziej, aby być może grupować te nazwy razem, które należą do siebie. W twoim przykładzie mogę umieścić Tk
, Frame
i Canvas
osobno, ponieważ grupują widżety razem, podczas gdy Button
i Text
osobno, ponieważ są mniejszymi komponentami w widoku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-17 10:34:37