2011-09-09 35 views
1

可能重复:
Should I use "from package import utils, settings" or "from . import utils, settings"准则使用的import语句的

什么是对的选择准则的Python标准库?:

导入时以下
import foo 
from foo import bar 

有什么注意事项?这是足迹吗?或者只是一个潜在的名字冲突的事情?

如果一个模块有最小的字符串处理,这会不会太超前了?:

from string import split 

如果一个程序有几个模块,将一个模块做了一个进口的结果是在随后的模块可用程序?

如果仅在冷码中需要导入的模块,是否将该导入隐藏在包含冷码的逻辑块中是否是一种很好的形式?

+1

[打气8](http://www.python.org/dev/peps/pep-0008/)包含对进口部分,这是一个好的地方开始。 – SingleNegationElimination

+3

在“相关问题”下阅读侧栏上链接的许多重复问题。 – agf

+0

@RC:我不认为它是:处理绝对vs相对导入,而不是它是从模块导入模块还是要导入的对象。 –

回答

0

如果您使用pyflakes,它会抱怨,如果你不使用你已经导入的东西。我发现,如果我只需要一个或两个函数/类,那么我会直接导入它们:如果我需要很多,我可能只使用名​​称空间版本(foo.bar)。

有成本。查找,所以如果你在嵌套循环中有很多它们,直接导入函数可能会更好,或者你可以将函数重新绑定到本地名称。

import foo 

def bar(baz): 
    for qux in baz: 
     for i in range(100000): 
      foo.bar(qux, i) 

为了减少查找时间:

import foo 

def bar: 
    foo_bar = foo.bar 
    for qux in baz: 
     for i in range(100000): 
      foo_bar(qux, i) 
+1

您可以随时将名称重新绑定到本地作用域,实际上并不需要在导入过程中执行此操作并污染全局作用域。 – agf

+0

是的,这有点简单。我会更新答案以反映这一点。 –