是否有推荐的多线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是最清楚的,因为你可以看到最好的导入名称。 然后,你甚至可以把它们分开,把这些名字归在一起。 在你的例子中,我可以把Tk
, Frame
和Canvas
分别放在一起,因为它们是一个视图中较小的组件。