在tkinter中使用import *方法是不好的做法吗?

时间:2015-04-05 06:47:20

标签: python python-3.x tkinter tk

从我读过的内容和给出的理由,我知道from foo import *方法是不好的做法,因为变量赋值的复杂性以及内存问题。但是,tkinter模块是否会成为此规则的例外?

我认为在使用GUI时,可能会考虑使用相应模块中的大多数函数/方法,与itertools之类的东西相比,可能只需要访问少数几个模块(一个不需要使用permutations combinations)。

独立于tkinter是否为异常,是否有任何模块?

2 个答案:

答案 0 :(得分:5)

from foo import *存在许多问题;它可以导入许多你没想到的东西,尤其是覆盖内置函数名称或从其他模块导入的东西。更糟糕的是,您的程序现在可能正常工作,但是在更高版本中,foo模块的作者在模块中添加了函数bar,如果预期barimport tkinter as tk ,您的代码可能会突然中断别的什么。

长模块的首选方法通常是使用短别名导入模块:

tk.Button

然后使用例如{{1}}。这是documentation使用的习语。

答案 1 :(得分:4)

Python有一个style guide,它明确说明了通配符导入的一个可接受用途:

  

应避免使用通配符导入(from <module> import *),因为它们不清楚命名空间中存在哪些名称,这会使读者和许多自动化工具混淆。通配符导入有一个可防御的用例,即将内部接口重新发布为公共API的一部分(例如,使用可选加速器模块中的定义覆盖接口的纯Python实现,以及确切的定义将是被覆盖的事先不知道。