我一直在问自己,为什么有一种方法可以从一个模块中导入某个函数,例如:从tkinter导入ttk
而不是仅仅导入整个模块,-->; 导入tkinter
它是否使程序运行得更快?
没有内存或速度差异(必须对整个模块进行计算,因为最后一行可以是Y=something_else)。 只有在循环中多次调用一个函数(数百万次或更多次)时才会有意义。 进行双字典查找最终会累积起来。
虽然import tkinter和from tkinter import ttk都导入了整个tkinter模块,但后者使用名称绑定,因此只有ttk可以被其余代码访问。
对于某些人来说,这将是首选的样式,因为它只允许访问您显式声明的函数。
但是,它确实会引入潜在的名称冲突。 注您还可以显式导入函数,并使用from tkinter import ttk将它们重命名为tkinter_ttk,这是一种满足显式导入的约定,并且不太可能发生给定名称空间冲突。
这并没有什么实际的区别,但它确实会有很大的区别,无论多么小。 这是因为在import x版本中有两个名称查找:一个用于模块名称,第二个用于函数名称; 另一方面,使用from x import y,您只有一个查找。
看看这个Python导入X还是从X导入Y? (性能)
通过导入所有的模块,解释器将执行整个python文件,而在像tkinter这样非常大的模块的情况下,这将花费更多的时间。 示例:
import example #contains 10 functions and 10 variables
example.function() #use only this
这是无效的,因为您只使用了1个函数。 原因:
通过使用“from”,您将只执行所需的内容,而且速度会更快。 所以,最好这样做:
from example import function #executes only a part of the module
example.function()