函数修饰符,使参数传递更理智。

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的优点:
    1. 在调用时提前报告错误。
    2. 不需要解压这些值。
    3. 默认值不必硬编码。
    4. 允许逐步改进,无需更改使用位置参数的旧代码。
  • 通话时可享受超过**dict的优惠:
    1. 更容易更新/覆盖值
    2. 位置参数也起作用
    3. 保证的不变性(对试图违反的行为抛出异常)
  • 在接收函数中优于默认值的优点:
    1. Options对象可以保存多个设置的默认值。
    2. 从函数本身取消耦合默认值。

安装

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上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ws-consumer服务地址中的java动态属性   java如何比较整数列表,然后按升序排序?   javascript我正在使用java脚本调用一个函数,但它没有调用代码下面的方法,也没有调用secretitnames()函数   在文本窗格中多次使用Java insertIcon图标   JavaMSAL安卓。AuthenticationActivity完成,但用于身份验证请求的线程池线程仍处于等待状态   if语句中的java多范围比较   java toString()表示输出   java如何在jcstrest测试中生成指令重新排序   java我怎样才能运行它?   web应用程序中使用Hibernate和Spring的java问题   如何将字符串数据写入Java文本文件   如何在java命令提示符下运行已签名的jar文件?   java从我的菜单调用RCP应用程序   java如何等待Canvas/GraphicsContext完成任务,然后再继续执行代码块?