总的来说,使用这种说法是一种不好的做法吗;从模块导入*;在我的python代码中?
一年前我参加了一个python教程,我非常喜欢它,所以我想我应该尝试将tkinter小部件合并到东西中,因为,嗯,GUI。我所看到的许多教程都以一行开头介绍初学者tkinter:总的来说,使用这种说法是一种不好的做法吗;从模块导入*;在我的python代码中?,python,python-3.x,import,Python,Python 3.x,Import,一年前我参加了一个python教程,我非常喜欢它,所以我想我应该尝试将tkinter小部件合并到东西中,因为,嗯,GUI。我所看到的许多教程都以一行开头介绍初学者tkinter: 从tkinter导入* 有没有令人信服的理由?我的意思是,为什么(或不)加载所有内容?是的,这是一种非常糟糕的做法,原因有两个: 代码可读性 覆盖变量/函数等的风险 对于点1: 让我们看一个例子: from module1 import * from module2 import * from module3 imp
从tkinter导入*
有没有令人信服的理由?我的意思是,为什么(或不)加载所有内容?是的,这是一种非常糟糕的做法,原因有两个:
对于点1: 让我们看一个例子:
from module1 import *
from module2 import *
from module3 import *
a = b + c - d
在这里,看到代码后,没有人会知道实际属于哪个模块b
、c
和d
另一方面,如果您喜欢:
# v v will know that these are from module1
from module1 import b, c # way 1
import module2 # way 2
a = b + c - module2.d
# ^ will know it is from module2
这对你来说更干净,而且新加入你团队的人会有更好的想法
对于点2:假设module1
和module2
都有变量作为b
。当我这样做时:
from module1 import *
from module2 import *
print b # will print the value from module2
此处,模块1
的值丢失。即使module1
中声明了b
,并且我编写的代码希望我的代码使用module1.b
,也很难调试代码为什么不工作
如果在不同的模块中有相同的变量,并且不想导入整个模块,您甚至可以执行以下操作:
from module1 import b as mod1b
from module2 import b as mod2b
这取决于具体情况,但它确实污染了本地名称空间。如果希望
tkinter
的命名空间名称更短,可以将tkinter作为tk导入。然后您的代码看起来像tk.
。