![]() |
1
63
在我们公司的生产代码中,我们试图遵循以下规则。 我们将导入放在文件的开头,就在主文件的docstring之后,例如:
现在,如果导入的类是导入模块中为数不多的类之一,那么我们直接导入名称,这样在代码中我们只需要使用最后一部分,例如:
但是,有些模块包含几十个类,例如所有可能的异常列表。然后我们导入模块本身并在代码中引用它:
我们使用
作为一般规则,我们不在方法内部进行导入——它们只是使代码更慢和更不可读。有些人可能会发现这是一个很容易解决循环导入问题的好方法,但更好的解决方案是代码重组。 |
![]() |
2
34
让我把对话的一部分粘贴到guido van rossum开始的django dev邮件列表上:
来源: http://groups.google.com/group/django-developers/browse_thread/thread/78975372cdfb7d1a 1: http://code.google.com/p/soc/wiki/PythonStyleGuide#Module_and_package_imports |
![]() |
3
12
我通常会用
只使用
当模块用作主模块时,我只使用功能级别的导入来导入所需的内容,例如:
高温高压 |
![]() |
4
8
上面有人说
等于
如果a-p是函数,你就不知道有什么区别。 |
![]() |
5
5
其他人已经覆盖了这里的大部分土地,但我只想添加一个我将使用的案例
因此,如果我们迁移到一个模块的新实现中,但不想一次全部削减代码库,我们可能会编写一个
然后,一旦我们切断了整个代码库,我们只需替换
|
![]() |
6
3
不要这样做:
除非你绝对确信你将使用该模块中的每一件事。即使如此,你也应该重新考虑使用不同的方法。 除此之外,这只是一个风格问题。
很好,可以节省大量的打字时间。当我经常在其中使用某些内容时,我倾向于使用它,但是如果您从该模块中导入了大量内容,那么最终可能会得到如下的导入语句:
你明白了。那时候进口就像
变得有用。或者,如果我不经常使用x中的任何东西。 |
![]() |
7
2
我一般都试着用普通的
例如,我会……
所以我能做到
或…
…而不是在我只使用xmppclientbase时导入整个xmpp
使用
假设我想从另一个脚本运行一个main()函数,但我已经有了一个main()函数。
…不会取代我的
哦,有一件事-不要做
在任何情况下,你
能够
只要做
这个
|
![]() |
8
1
当您有一个编写良好的库(在Python中有时是这样)时,您应该导入它并将其作为它使用。写得好的图书馆往往会占用它自己的生命和语言,导致令人愉快的阅读代码,在那里你很少参考图书馆。当一个图书馆写得很好的时候,你不应该太频繁地需要重新命名或者其他任何东西。
有时候不可能这样写,或者你想从你导入的库中取下东西。
有时,对于很多事情都要这样做,如果导入字符串溢出80列,最好这样做:
最好的策略是将所有这些导入保持在文件的顶部。最好按字母顺序排列,先导入-语句,然后从导入-语句。 现在我告诉你为什么这是最好的会议。 python完全可以有一个自动导入,当在全局命名空间中找不到该值时,可以从主导入中查找该值。但这不是个好主意。我很快解释了原因。除了实现比简单的导入更复杂之外,程序员不会太多地考虑依赖性,并且发现从哪里导入东西应该以其他方式进行,而不仅仅是查看导入。 需要找出出处是人们讨厌“来自……的原因之一。导入*”。但也有一些不好的例子需要这样做,例如OpenGL包装。 因此,导入定义实际上对于定义程序的依赖性很有价值。这就是你应该如何利用它们的方式。从它们中,您可以快速地检查一些奇怪的函数是从哪里导入的。 |
![]() |
9
0
这个
有一些嵌套的
|
![]() |
10
0
我和杰森在一起的事实是不使用
但是在我的例子中(我不是一个专业的程序员,所以我的代码不太符合编码风格),我通常在我的程序中做一个包含所有常量的文件,比如程序版本、作者、错误消息和所有这些东西,所以文件只是定义,然后我进行导入
这节省了我很多时间。但它是唯一有这个导入的文件,这是因为该文件中的所有内容都只是变量声明。 在包含类和定义的文件中执行这种导入可能很有用,但是当您必须读取该代码时,需要花费大量时间来定位函数和类。 |