|
|
@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
# Python Fire可以做什么?
|
|
|
|
|
|
|
|
这是一个通过暴露复杂系统内部接口,利用管道和CLI来方便测试的工具。
|
|
|
|
|
|
|
|
它可以自动扫描module, object, class, function并自动构建管道
|
|
|
|
|
|
|
|
Expose functionality to user by archive them in a function / module / object / class / dict
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Python fire 源码分析:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## __main__.py
|
|
|
|
|
|
|
|
主要负责import被使用的module,或者file,将其导入Fire.fire()函数。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## core.py
|
|
|
|
|
|
|
|
原型:Fire(component=None, command=None, name=None).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fire的一般执行过程如下:
|
|
|
|
|
|
|
|
1. 从参数列表pop一个参数
|
|
|
|
|
|
|
|
1. 根据参数的类型
|
|
|
|
|
|
|
|
1. 实例化被使用的class
|
|
|
|
|
|
|
|
2. 或者调用命令所指向的function
|
|
|
|
|
|
|
|
3. 或者查找命令指向的属性
|
|
|
|
|
|
|
|
1. 返回步骤1
|
|
|
|
|
|
|
|
当不再能够继续执行时,fire将结果序列化后输出
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
我们可以注意到其比较核心的功能需要用到静态代码分析、反射、模式匹配
|