是否有推荐的多行导入格式?

Man*_*rez 106 python pep8 python-2.7

我已经读过在python中有三种编码多行导入的方法

用斜杠:

from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \
    LEFT, DISABLED, NORMAL, RIDGE, END
Run Code Online (Sandbox Code Playgroud)

复制信息:

from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END
Run Code Online (Sandbox Code Playgroud)

括号:

from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
    LEFT, DISABLED, NORMAL, RIDGE, END)
Run Code Online (Sandbox Code Playgroud)

这些陈述是否有推荐的格式或更优雅的方式?

Bre*_*ire 146

我个人在导入多个组件时使用括号并按字母顺序对它们进行排序.像这样:

from Tkinter import (
    Button,
    Canvas,
    DISABLED,
    END,
    Entry,
    Frame,
    LEFT,
    NORMAL,
    RIDGE,
    Text,
    Tk,
)
Run Code Online (Sandbox Code Playgroud)

这具有额外的优点,即可以容易地看到在每个提交或PR中添加/删除了哪些组件.

总的来说,虽然这是个人喜好,但我建议你选择最适合自己的东西.

  • 我认为重要的是要保持一致(至少在给定的项目中).这将使阅读代码的人很容易找到被导入的内容而不会有太多困难. (3认同)

Tho*_*anz 14

您的示例似乎源于PEP 328.在那里,括号 - 符号是针对这个问题而提出的,所以我可能会选择这个.


Max*_*ysh 7

我会使用PEP328 中的括号表示法,并在括号前后添加换行符:

from Tkinter import (
    Tk, Frame, Button, Entry, Canvas, Text, 
    LEFT, DISABLED, NORMAL, RIDGE, END
)
Run Code Online (Sandbox Code Playgroud)

这是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,
)
Run Code Online (Sandbox Code Playgroud)