我需要预先定义函数的参数一次,然后在其他地方使用该函数而不将参数传递给它们。
像这样:
@predef
def foo(x):
print(x)
foos = foo("hello"), foo("world")
for f in foos:
f()
>> hello
>> world
一切都按我的意愿运作。但装饰师看起来很棘手。
def predef(f):
def decorator(*args, **kwargs):
def wrapper(*args, **kwargs):
while True:
yield f(*args, **kwargs)
return wrapper(*args, **kwargs).__next__
return decorator
我觉得有更简单的方法可以做到这一点。是吗?
答案 0 :(得分:3)
对于您的具体示例:
>>> foos = lambda: print('hello'), lambda:print('world')
>>> for f in foos: f()
hello
world