repeated_call#
- consign.repeated_call(debug)[源代码]#
repeated_call函数/修饰器可以将一个函数修饰成闭包,使得函数以有参形式调用后可以再一次被无参调用
def test(something: any): return something test("hi")
当其被修饰时,相当于
@repeated_call def test(something: any): return something # 此时返回的是一个替代函数,test并没有被真正执行 test("hi") # 完整的执行过程,等价于没修饰前的test("hi") test("hi")()
repeated_call
并不是必须的,与之相似功能的还有 functools中的partial
以及 class中的__call__
方法警告
一般而言,他的使用是为了consign中的一项规则:yield 一个 function 时,function 应当满足无参的条件
但值得注意的是,这个条件可能在 未来被移除 ,有违简单易用这个初衷,他是我为了自己旧版项目做的兼容
repeated_call
并不是必须的!因为consign只在乎你yield的是否是一个无参的可调用对象 如果你本身是无参的,可以直接传递函数名通常情况下,你可以直接在yield前调用function, 这其实意味着你yield的是调用函数后的返回值 。
- 参数
debug (bool) – 如果为True,那么返回原函数
- 抛出
AssertionError – 当传入参数
func
不是callable
时抛出