一般来说,在我的python代码中使用语句"from module import*"是不好的做法?

end*_*eus 2 python import python-3.x

我在一年前参加了一个python教程并且非常喜欢它,所以我想我会尝试将tkinter小部件合并到一些东西中,因为GUI.我看过很多关于初学者tkinter的教程都是用这条线开始的代码:

from tkinter import *

这有什么令人信服的理由吗?我的意思是,为什么(或不)加载一切?

Moi*_*dri 5

是的,这是一个非常糟糕的做法有两个原因:

  1. 代码可读性
  2. 覆盖变量/功能等的风险

对于第1点:让我们看一个这样的例子:

from module1 import *
from module2 import *
from module3 import *

a = b + c - d
Run Code Online (Sandbox Code Playgroud)

在这里,看到代码,没有人会得到的想法从哪个模块有关b,cd实际上属于.

另一方面,如果你这样做:

#                   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
Run Code Online (Sandbox Code Playgroud)

这对你来说更清洁,加入你团队的新人也会有更好的想法.

对于第2点:让我们说两个module1并且module2变量为b.当我做:

from module1 import *
from module2 import *

print b  # will print the value from module2
Run Code Online (Sandbox Code Playgroud)

这里的价值module1就会丢失.即使b声明代码也很难调试代码无法工作的原因,module1并且我编写了代码,希望我的代码可以使用module1.b.

如果在不同的模块中有相同的变量,并且您不想导入整个模块,您甚至可以:

from module1 import b as mod1b
from module2 import b as mod2b
Run Code Online (Sandbox Code Playgroud)