在Django中从模型(或表单或视图)导入的pythonic方式是什么?Pythonic的方式来编写长的导入语句
要说起来我坦诚直言这样做:
它比最大的79个字符更长的时间 - 但什么是更好的方式来做到这一点?
在Django中从模型(或表单或视图)导入的pythonic方式是什么?Pythonic的方式来编写长的导入语句
要说起来我坦诚直言这样做:
它比最大的79个字符更长的时间 - 但什么是更好的方式来做到这一点?
使用括号,以便将进口在一起:
from myapp.models import (foo, bar, foobar, barfoo, foofoo,
barbar, barfoobar, thelistgoeson, and, on, and, so, on)
这是按照PEP-328 Rationale for parentheses:
目前,如果你想从一个模块或 包导入了很多名字,你必须选择几个难吃的选项之一:
- 写一个长队与后卫^ h延续:
- 写多个import语句:
(
import *
是不是一种选择;-)相反,它应该可以使用Python的标准分组 机制(括号内)写的进口声明:
该提案的这一部分从一开始就得到BDFL的批准。
圆括号支持已添加到Python 2.4。
如何导入模型?
from myapp import models
foo = models.foo
bar = models.bar
它更短,您不必维护进口清单。你也有一个命名空间,你可以有局部变量foo
和bar
'from myapp.models import foo' * already *创建了一个名为'foo'的局部变量。这就是导入所做的事情:它将来自外部模块的值绑定到当前模块名称空间中的名称。此代码实际上是*更长*,因为您必须为每个本地名称重复模块名称和模块成员。只有各条线较短。 – chepner 2014-10-08 09:56:04
我知道这一点。但是你可以为每个变量保留一个名称空间,这是有道理的,而不是让所有的局部变量和你的导入共享相同的名字空间。它最终没有太大变化,但这就是我尝试使用的方式(并不总是可能的) – Paco 2014-10-08 10:53:30
如果我了解您所做的区别,您可以使用这两个导入:'从myapp导入模型'具有'模型'在本地命名空间中访问你不需要特别导入的东西,然后'from myapp.models import(foo,bar等)'来导入特定的名称。 – chepner 2014-10-08 12:33:35
我把不同的名字放在不同的行上并对它们进行排序。通过这种方式,添加或删除名称在差异中更加清晰。 – 2014-10-08 09:46:53
我不知道我可以使用圆括号 - 现在看来很明显,杜。现在,我为每个名称和最后一行中的尾随逗号分别设置了一行,以便在git和diff中实现更好的可读性 – 2014-10-08 10:41:32