如何在Python中使用组件化开发模式

关于在Python中使用组件化开发模式的问题,实际源自公司数据质量项目中需求,在主打的数据感知功能中,其代码的目录结果类似如下:

  
similar_test/  
├── algorithm  
│   ├── address  
│   │   ├── __init__.py  
│   │   └── main.py  
│   ├── company  
│   │   ├── company.txt  
│   │   ├── __init__.py  
│   │   └── main.py  
│   ├── __init__.py  
│   └── username  
│       ├── __init__.py  
│       ├── main.py  
│       └── username.txt  
├── common  
│   ├── __init__.py  
│   └── utils.py  
├── __init__.py  
└── main.py  

在这里我们主要的感知算法放置在algorithm包下,当前有3个主要的感知算法,分别为address、company和username。
而现在,我们需要在main函数中有这样1段代码:

from common.utils import get_frequence  

def test():  
    freq = get_frequece('username.txt')  
    print(freq)

我们希望传入1个文件的名称,然后获取到其对应的频率的次数。而对外的接口是调用similar包中的main模块,调用相应的函数,这样就可以对各个算法进行调用了。
在这里,我们将会用到如下的内容:

  • 动态加载模块及包
  • 对当前包下静态文件进行读取,可能会用到命名空间的一些内容

而关于这2部分的内容,暂时还没有什么好的想法,也正在实践中。但是觉得这种开发模式是挺适合团队一起开发的。
实际上,关于组件化的开发模式,在Pyramid中的模板渲染及Flask的子包都是可以看到的,在新的版本中Flask已经实现了类似Pyramid中可以在指定包下指定模板文件的功能。
而更为常见的则是Zope这样的项目,包括Twisted中随处可见的对模块的注册和取消,可以说前途是挺广泛的。

若文章对您有帮助,请打赏1块钱。您的支持,可以让我分享更多精彩的文章。转载请注明来源


知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。