是否有推荐的多线import格式?

我已经读了有三种方式编码python多行import

随着斜线:

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) 

是否有一个推荐的格式或更优雅的方式,这种说法?

就我个人而言,在导入多个组件并按字母顺序对它们进行sorting时,会使用括号。 像这样:

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

这还有一个好处,就是可以轻松查看每个提交或PR中添加/删除了哪些组件。

总的来说,虽然这是一个个人喜好,我build议你去任何看起来最好的东西给你。

你的例子似乎源于PEP 328 。 在那里,括号表示正是为了这个问题,所以可能我会select这个。

我会用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, ) 

通常与Tkinter,只要使用from Tkinter import *是可以的,因为模块将只导出明显的小部件名称。

PEP 8没有列出这种情况下的任何约定,所以我想这是由你来决定什么是最好的select。 这完全是关于可读性的,所以select任何明确说明你从一个模块中导入东西的东西。

由于所有这些名字都在你的范围内,所以我个人认为选项2是最清楚的,因为你可以看到最好的导入名称。 然后,你甚至可以把它们分开,把这些名字归在一起。 在你的例子中,我可以把TkFrameCanvas分别放在一起,因为它们是一个视图中较小的组件。