今日工作
今天的工作是重构了ams_tags,收获如下
灰色地带
func(*args)该如何传参?
*args是可变参数,调用时正常传值就可以。
引申:
- args是可变参数,多个无名参数,是一个tuple
- kwargs是可变参数,关键词参数,是一个dict
代码使用函数名调用全局函数func的方式
globals()['func'](XXX)
引申:
A namespace is a mapping from names to objects. Most namespaces are currently implemented as Python dictionaries。
- 名字空间是一个字典,记录变量的轨迹
- 在任意地方,都存在几个可用的名字空间:局部/全局/内置名字空间(搜索顺序,搜索不到触发NameError)。
绿色地带
从零手写简陋的command-line的工具
核心利用了exit(globals()[command](*args))