函数修饰符,使参数传递更理智。
decorated_options的Python项目详细描述
函数修饰符,使参数传递更理智。
我经常要写一个函数来运行一个模拟/学习任务 需要运行几个不同的参数。最初这是可以控制的,但是 然后慢慢地,配置爬行开始发生:我不断地添加越来越多的 运行模拟的函数的参数 代码越来越脆弱。
我写了decorated_options来分离不同实验集的参数。
简而言之,decorated_options将此转换为:
def run(max_num_followers, num_segments, is_hawkes): # ... # ... # tmp = run_multiple_followers(max_num_followers=10, num_segments=10, is_hawkes=True) # tmp = run_multiple_followers(max_num_followers=100, num_segments=10, is_hawkes=False) # tmp = run_multiple_followers(max_num_followers=10, num_segments=50, is_hawkes=True) tmp = run_multiple_followers(max_num_followers=1000, num_segments=100, is_hawkes=False)
收件人:
from decorated_options import Options, optioned @optioned('opts') def run(max_num_followers, num_segments, is_hawkes): # ... # ... opts = Options(max_num_followers=10, num_segments=10, is_hawkes=True) # tmp = run_multiple_followers(opts=opts) # tmp = run_multiple_followers(max_num_followers=100, is_hawkes=False, opts=opts) # tmp = run_multiple_followers(num_segments=50, is_hawkes=False, opts=opts) tmp = run_multiple_followers(max_num_followers=1000, num_segments=100, is_hawkes=False)
- 在接收函数中优于**kwargs的优点:
- 在调用时提前报告错误。
- 不需要解压这些值。
- 默认值不必硬编码。
- 允许逐步改进,无需更改使用位置参数的旧代码。
- 通话时可享受超过**dict的优惠:
- 更容易更新/覆盖值
- 位置参数也起作用
- 保证的不变性(对试图违反的行为抛出异常)
- 在接收函数中优于默认值的优点:
- Options对象可以保存多个设置的默认值。
- 从函数本身取消耦合默认值。
安装
pip install git+https://github.com/musically-ut/decorated_options.git@master#egg=decorated_options
开发
要运行所有测试,请运行:
tox
注意,要合并来自所有tox环境的覆盖率数据,请运行:
Windows | ^{pr 5}$ |
---|---|
Other | ^{pr 6}$ |
更改日志
0.1.0(2016-07-24)
- pypi上的第一个版本。