Q1:理解下面这个if语句
if __name__ == "__main__":
模块(可以认为是一个py文件)都有一个变量name,可以在模块中print name的值看来本模块独立执行的值为
__main__
__name__ 是当前模块名,当模块被直接运行时模块名为 __main__ 。这句话的意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行。
Q2:理解继承父类并初始化
super(MainWindow, self).__init__(parent)
- 在 派生类的构造函数初始化列表中 调用 父类的带有参数的构造函数,是为了初始化从父类继承来的成员变量。因为这些变量无法直接初始化,只能采用这种方式初始化。
- 而在qt中,MainWindow中的某成员变量(指向父组件的指针,假定为p)无法直接初始化,只能在初始化列表中调用QMainWindow(parent),把形参parent的值间接的传给p,使p完成初始化。
- 加强理解:
- 这里的parent参数只是一个形参,并没有实际意义,可以用任何参数来代替:比如a
- 这里的MainWindow作为此类名输入,只是为了将父类的初始化属性方法绑定到自雷MainWindow上面,便于直接使用self.进行调用。
Q3:.py和.pyc的区别
-
Python的程序中是把原始程序代码放在.py文件里,而Python会在执行.py文件的时候。将.py形式的程序编译成中间式文件(byte-compiled)的.pyc文件,这么做的目的就是为了加快下次执行文件的速度。
-
所以,在我们运行python文件的时候,就会自动首先查看是否具有.pyc文件,如果有的话,而且.py文件的修改时间和.pyc的修改时间一样,就会读取.pyc文件,否则,Python就会读原来的.py文件。
-
其实并不是所有的.py文件在与运行的时候都会差生.pyc文件,只有在import相应的.py文件的时候,才会生成相应的.pyc文件