我正在用python编写程序。我正在使用大约十几个模块。目前我已将它们放在函数本身中。我的理由是,由于用户不打算在会话中使用所有功能,因此在功能需要它们之前,不必无需导入许多模块。但是我到目前为止看到的所有代码都在开头就有了它们的进口。他们的理由和优势是什么?
还有什么是最好的导入方式?我见过几种类型:
from tkinter import *
然后Label()
,Tk()
import tkinter
然后tkinter.Label()
,tkinter.Tk()
import tkinter as tk
然后tk.Label()
?最好的方法是什么?我看到第一个是最短的。它也是最好的吗?
答案 0 :(得分:1)
我会尝试回答你问题的第二部分。
from tkinter import *
然后Label()
,Tk()
这是一种不好的做法,因为它混合了命名空间,可能会混淆未来的代码读者。例如,许多模块都有sqrt
函数(标准库math
,numpy
,scipy
)。如果您对其中几个使用全部导入(*
),则最后一个将获胜。有时模块具有覆盖标准python函数的函数,并且读者无法知道此特定函数的来源。即使您只在一个模块上使用import-all,读者也必须区分标准python函数和包函数,例如来自getint
的{{1}}?为什么他使用tkinter
而不是NONE
等。这只应该用于解释器的交互式工作。
None
然后import tkinter
,tkinter.Label()
这是最明确的(并记住explicit is better than implicit),但它有点长。
tkinter.Tk()
然后import tkinter as tk
?
这是1和2之间的良好折衷。简短而明确。所以你必须在2到3之间做出决定。如果经常使用包,并且它有一个明确的短名称(例如tk.Label()
,tkinter -> tk
),我会使用短名称。