摘要: 写带参数的函数装饰器最纠结的是需要包好多层,最外层是接收参数的函数,它返回一个接收函数的的函数。但这样有个问题是,最终包装出来的装饰器必须加()调用一下,即使没有参数也需要这样做,因为调用这个最外层函数才能返回里面装饰器(就是接收函数的函数)。以前一篇为例,可以这样改进: def opt_arguments(func): def meta_wrapper(*args, **kwargs): i... 阅读全文
posted @ 2014-04-02 20:34 紫红的泪 阅读(1279) 评论(0) 推荐(0) 编辑
摘要: 有时候把Python函数调用的命名参数都收集到一个dict中可以更方便地做参数检查,或者直接由参数创建attribute等。更简单的理解就是def foo(*args, **kwargs): pass可以接受所有的参数,其中kwargs就是命名参数字典,那么直接在函数外面套个foo却不能达到目的,一个比较简单的实现是这样的: def annotation(**annotations): """ ... 阅读全文
posted @ 2014-04-02 14:36 紫红的泪 阅读(2694) 评论(0) 推荐(0) 编辑