from tkinter import *
import tkinter.messagebox as messagebox
以上代码中 tkinter 是一个包,然后第一句把包里面的所有模块引入进来。
第二句 messagebox 是 tkinter 中的一个模块,按我的理解,第一句已经全部引入进来了,为什么还要把 messagebox 单独引入才能正常使用了。而不写第二句,我尝试用 tkinter.messagebox.func(),或者 messagebox.func()调用都报错 not define 。
麻烦 pythoner 们授业解惑,小弟不甚感激
1
yangtukun1412 2015-12-29 15:48:49 +08:00 1
from tkinter import * 引入的是 tkinter/__init__.py 中的内容,而在 __init__.py 中没有 import messagebox ,所以没有引入。
|
2
nooper 2015-12-29 15:49:35 +08:00 1
不要用 import *
要了解 packages 结构。 分绝对导入,相对导入,还有神吗导入。 你可以理解一下 locals () 和 globals () 比如你导入的时候可以写成 from .packages import mydev 或者 from apps.packages import mydev 等等,避免循环调用会非常的影响性能, 千万不要再函数里方法里面写 import ,如果这么写代码就可以说写得很垃圾了,一开始就没有设计好。 |
3
SimpKae OP @yangtukun1412 非常感謝,小弟顿时茅舍顿开呀,看來得学的更细致些。
|
5
garfieldWu 2015-12-29 16:53:17 +08:00
补充 nooper ,不同导入路径的同一个包所占的内存空间也是不同的,就是由于 locals()和 globals()
|