2015-04-05 90 views
0

从我读过的内容和给出的理由来看,我知道from foo import *方法是不好的做法,这是由于变量赋值和内存问题的复杂性。但是,tkinter模块是否会成为此规则的例外情况?我认为,当使用GUI时,人们可能正在寻找使用来自相应模块的大部分功能/方法,其中与itertools相比,可能只需要访问少数模块(一个将不需要使用permutationscombinations)。对tkinter使用import *方法是不好的做法吗?

无论tkinter是否例外,是否有任何模块?

回答

4

Python有一个style guide,这是明确的关于通配符进口一个可接受的使用:

通配符进口(from <module> import *)应该避免,因为它们使不清楚哪个名字出现在命名空间,混淆读者和许多自动化工具。对于通配符导入有一个有效的用例,即重新发布内部接口作为公共API的一部分(例如,用可选加速器模块的定义覆盖接口的纯Python实现,并确切定义哪些定义预先覆盖不知道)。

+0

谢谢你,从来不知道这存在^ _ ^ – user2901512 2015-04-06 11:54:52

5

from foo import *有许多问题;它可以导入许多你不想要的东西,特别是可以覆盖内置函数的名称或从其他模块导入的东西的东西。更糟糕的是,您的程序现在可能正常工作,但在foo模块的作者以后的版本中,在模块中添加功能bar,如果预期bar是其他内容,您的代码可能突然中断。

的优选方式与长模块通常是具有短别名导入模块:

import tkinter as tk 

,然后使用例如tk.Button。这是documentation使用的成语。

+0

啊,我从来不知道,你可以导入富,酒吧,或者更确切地说,foobar的为FB,这使得它很容易,谢谢:)指导我的风格指南 – user2901512 2015-04-05 06:56:20

相关问题