将 import * 方法与 tkinter 一起使用是不好的做法吗?

Is it bad practice to use the import * method with tkinter?

根据我所阅读的内容和给出的原因,我知道 from foo import * 方法是不好的做法,因为变量分配的复杂性以及内存问题。但是,tkinter 模块会是这个规则的例外吗?

我认为在使用 GUI 时,人们可能希望使用来自相应模块的大部分 functions/methods,与 itertools 之类的东西相比,人们可能只需要访问一些模块(不需要使用 permutations combinations)。

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

from foo import * 有很多问题;它可以导入很多你没想到的东西,尤其是一些覆盖内置函数名称的东西或者你从其他模块导入的东西。更糟糕的是,您的程序现在可能可以运行,但是当 foo 模块的作者在模块中添加函数 bar 时,如果它期望 bar 是,您的代码可能会突然中断别的。

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

import tkinter as tk

然后使用例如tk.Button。这是documentation.

的成语

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

Wildcard imports (from <module> import *) should be avoided, as they make it unclear which names are present in the namespace, confusing both readers and many automated tools. There is one defensible use case for a wildcard import, which is to republish an internal interface as part of a public API (for example, overwriting a pure Python implementation of an interface with the definitions from an optional accelerator module and exactly which definitions will be overwritten isn't known in advance).