pycodestyle proposal español enhancement autopep8 python python-2.7 pep8

español - python enhancement proposal no 8 pep8



¿Hay un formato recomendado para las importaciones de líneas múltiples? (4)

Me gustaría ir con la notación de paréntesis del PEP328 con nuevas líneas añadidas antes y después de paréntesis:

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

Este es el formato que usa 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, )

He leído que hay tres formas de codificar importaciones multilínea en python

Con barras diagonales:

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

Duplicar las oraciones:

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

Con paréntesis:

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

¿Hay un formato recomendado o una forma más elegante para estas declaraciones?


Personalmente, voy con paréntesis cuando importo más de un componente y los clasifico alfabéticamente. Al igual que:

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

Esto tiene la ventaja adicional de ver fácilmente qué componentes se han agregado / eliminado en cada confirmación o PR.

En general, es una preferencia personal y le aconsejo que vaya con lo que le parezca mejor.


Por lo general, con Tkinter, está bien usar from Tkinter import * ya que el módulo solo exportará nombres que sean claramente widgets.

PEP 8 no enumera ninguna convención para tal caso, así que supongo que depende de usted decidir cuál es la mejor opción. Todo se trata de legibilidad, así que elija lo que sea que indique que está importando cosas de un solo módulo.

Como todos esos nombres están disponibles en su alcance, personalmente creo que las opciones 2 son las más claras ya que puede ver mejor los nombres importados. Incluso podrías dividirlo más para quizás agrupar esos nombres juntos que pertenecen el uno con el otro. En su ejemplo, podría poner Tk , Frame y Canvas separado, ya que agrupan widgets, mientras que tienen Button y Text separado, ya que son componentes más pequeños en una vista.


Sus ejemplos parecen provenir de PEP 328 . Allí, la anotación de paréntesis se propone exactamente para este problema, así que probablemente yo elegiría esta.