模块和类:
模块会被作为一个对象来处理。
在运行python代码时,最常遇到的就是导入模块错误的问题(包括安装模块),整理一下
谈谈__name__ = ‘main’ 的作用的理解:
由于在import模块时会自动执行该python脚本的代码
假如该脚本任务是print一个字符串,两种写法:
写法1:
print("hello")
class A():
print("here is A") #与本文无关,但是这句话可以体现“类也是一个实例”这句话
写法2:
def main():
print("hello")
if __name__ == '__main__':
main()
虽然在单独执行时无区别,但是写法1会导致该脚本被import时执行一遍print函数
另外调试代码的时候,在”if name == ‘main’“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!
“Make a script both importable and executable”
importlib模块:支持传入字符串来引入一个模块
mod_ref_name = importlib.import_module(module)
mod_spec = importlib.util.find_spec(module_name) # 检查模块是否存在,若存在则导入模块spec,否则返回None
module = importlib.util.module_from_spec(module_spec) # 暂时没觉得有什么用
内置函数__import__()函数可以直接引入github中的包
参考1
import和__import__区别
绑定到局部变量没怎么理解,可能是指给模块赋个可以引用的名字
钩子函数
windows里的钩子函数其实就是回调函数的意思,今天也有想到监听这种机制是可以通过回调实现的
还没有想清楚回调函数的函数调用栈与顺序执行有什么区别,对回调的理解还太肤浅,不能灵活应用