diff --git a/source_code_learning b/source_code_learning new file mode 100644 index 0000000..a9920b9 --- /dev/null +++ b/source_code_learning @@ -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将结果序列化后输出 + +我们可以注意到其比较核心的功能需要用到静态代码分析、反射、模式匹配 \ No newline at end of file