有人可以解释
之间的区别import tkinter as tk
和
from tkinter import *
如果有人可以给出相同任务的例子,那就太棒了 通过单独使用这两个语句来实现(或创建一个对象)
答案 0 :(得分:1)
简单地说,导入tkinter作为tk将在你的文件中启动一个tkinter的tk实例,它可以通过编写像
这样的函数来调用它的函数import numpy as np
import scipy
from scipy import signal
from numpy.fft import ifft2, fft2
imgSize = 4
filtSize = 3
padFilt = imgSize - filtSize
testImg = np.random.uniform(0,1,(imgSize,imgSize))
filter = np.random.normal(0,3.0,(filtSize,filtSize))
circConv = scipy.signal.convolve2d(testImg, filter, boundary="wrap", mode="same")
filterFFT = np.pad(filter,((0,padFilt),(0,padFilt)),'constant')
fftConv = np.real(ifft2(fft2(testImg) * fft2(filterFFT)))
# Roll the FFT output to match the wrap output
fftConv = np.roll(fftConv, (-((filterFFT.shape[0] - 1) // 2), -((filterFFT.shape[1] - 1) // 2)), axis=(0, 1))
print(circConv)
print(fftConv)
这样可以避免输入长名称。
来自tkinter import *将导入tk.Entry()
变量下定义的所有名称,因此您可以调用与
__all__
您应该阅读This以了解更多
答案 1 :(得分:0)
两者都导入相同的包。主要区别在于您的第一行是导入包tkinter然后使用“tk”引用它,这将允许您使用该不同的名称调用其函数。我对tkinter没有任何经验,但我能给出的一个很好的例子就是numpy或pandas。 numpy中的很多函数,比如numpy.random.randn(),可以使用“import as”用简写名称编写,如下所示:
import numpy as np
np.random.randn()
答案 2 :(得分:0)
差异接缝起初很少,但import tkinter as tk
实际上是一个更好的选择,原因很简单。
通过导入特定的内容,您可以使该导入中的所有方法都需要prifix。这可以防止方法意外覆盖或被覆盖。
例如,如果我有一个包含time()
方法的库,并且要求调用此库custom_timer
,然后说我还需要导入内置的time
方法。
如果我导入使用*
,我们就会遇到问题。
from custom_timer import * # importing all modules including time() form this library.
import time # importing built in time().
最终会发生什么是第二次导入将覆盖第一次导入时的time方法。为了防止这样的事故,我们可以简单import as your_prefix_here
。
举个例子。
import custom_timer as ct # importing this library as ct.
import time # importing built in time().
在这种情况下,我们将有2个不同的时间导入,不会互相覆盖。
一个是ct.time()
,另一个是time()
由于像tkinter这样的库包含许多方法,因此出于上述原因使用import as
经文import *
更安全。
所有这一切都说,如果你匆忙,只是想把一些东西放在一起测试一个想法或使用from tkinter import *
回答问题对于小得多的应用程序来说是好的。就个人而言,我尝试使用import tkinter as tk
来做好我练习的所有事情。
至于您对2个示例的请求,请参阅下文。
使用tk
导入:
import tkinter as tk
root = tk.Tk()
tk.Label(root, text="I am a label made using tk prefix.")
root.mainloop()
使用*
导入:
from tkinter import *
root = Tk()
Label(root, text="I am a label made in tkinter with the * import.")
root.mainloop()