J'ai lu qu'il y a trois façons de coder les importations multilignes en python
Avec des barres obliques:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \
LEFT, DISABLED, NORMAL, RIDGE, END
Duplication des senteces:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END
Avec parenthèses:
from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END)
Existe-t-il un format recommandé ou une manière plus élégante pour ces déclarations?
python
python-2.7
pep8
Manuel Alvarez
la source
la source
from Tkinter import *
?from data.forms import AddressEmbeddedField, PhoneEmbeddedField, MailEmbeddedField, \ WebEmbeddedField
mais ne veut pas importer tout le reste des champs incorporés dans data.formsfrom Tkinter import *
? Je ne suis pas. Et les IDE ne sauront pas si ces noms (peut-être), ils ne peuvent donc pas dire si vous avez entré un nom invalide.Réponses:
Personnellement, je vais avec des parenthèses lors de l'importation de plus d'un composant et les trie par ordre alphabétique. Ainsi:
Cela a l'avantage supplémentaire de voir facilement quels composants ont été ajoutés / supprimés dans chaque commit ou PR.
Dans l'ensemble, c'est une préférence personnelle et je vous conseillerais de choisir ce qui vous convient le mieux.
la source
Vos exemples semblent provenir de la PEP 328 . Là, la notation entre parenthèses est proposée pour exactement ce problème, donc je choisirais probablement celui-ci.
la source
J'irais avec la notation entre parenthèses du PEP328 avec des nouvelles lignes ajoutées avant et après les parenthèses:
C'est le format que Django utilise:
la source
from foo import (bar, baz)
. PEP 328 ne dit rien sur le formatage.Habituellement, avec Tkinter, il est acceptable de simplement l'utiliser
from Tkinter import *
car le module n'exportera que les noms qui sont clairement des widgets.PEP 8 ne répertorie aucune convention pour un tel cas, donc je suppose que c'est à vous de décider quelle est la meilleure option. Tout est question de lisibilité, alors choisissez ce qui indique clairement que vous importez des éléments à partir d'un seul module.
Comme tous ces noms sont disponibles dans votre champ d'application, je pense personnellement que les options 2 sont les plus claires car vous pouvez voir les noms importés les meilleurs. Vous pourriez même le diviser davantage pour peut-être regrouper ces noms qui vont les uns avec les autres. Dans votre exemple, je pourrais mettre
Tk
,Frame
etCanvas
séparément, car ils regroupent les widgets ensemble, tout en ayantButton
etText
séparément car ils sont des composants plus petits dans une vue.la source
from X import *
même pour les packages qui utilisent__all__
correctement est que les analyseurs de code statiques commepyflakes
ne peuvent pas détecter les noms non définis s'il y en a,import *
car ils doivent supposer que tous les noms non définis ont peut-être été importés par le*
.