迭代器,生成器,
https://blog.mimvp.com/article/7388.html
https://foofish.net/magic-method.html
装饰器,
https://foofish.net/python-decorator.html
设计模式
__import__ 与动态加载 python module
本文介绍 python module 的动态加载,我们有时希望从配置文件等地获取要被动态加载的 module,但是所读取的配置项通常为字符串类型,无法用 import 加载。用__import__转化为module形式,可以在后续中进行调用。例如下面,net_module_name是一个字符串,用__import__把它变成后续可以加载的形式。
net_module = __import__(net_module_name)
parser_module = __import__(data_parser_module_name)
通过 getattr 获取对象引用
https://www.woodpecker.org.cn/diveintopython/power_of_introspection/getattr.html
如果不确信它是多么的有用,试试这个:getattr 的返回值是 方法,然后你就可以调用它,就像直接使用 li.append("Moe") 一样。但是实际上你没有直接调用函数;只是以字符串形式指定了函数名称。
比如下面这个例子,parser_module是一个模块,传入了一个类名。这个类名里有不同的函数,比如train_reader_name,test_reader_name是两个不同的函数,通过getattr来调用类里面的不同函数。
net_func = getattr(net_module, net_func_name)
train_reader = getattr(parser_module, train_reader_name)
test_reader = getattr(parser_module, test_reader_name)