async def say_something(delay,what):
await asyncio.sleep(delay)
print(f"{what}")
say_func = partial(say_something, delay=5)
#await asyncio.gather(*map(say_func,["你好","你是谁"]))
await asyncio.gather(*(say_func(what=what) for what in ["你好","你是谁"])) #这个生成器的方式更加灵活多变
注意 :say_func(what=what) for what in ["你好","你是谁"]
中是以关键字参数what=what
的方式传递参数的,如果是say_func(what) for what in ["你好","你是谁"]
则是默认按照位置参数的方式传递参数,即将what值传递给delay形参,从而报错,因为我们已经使用partial
函数固定了delay参数。
关键字参数和位置参数的混合使用:
# 位置参数在前,关键字参数在后
print(fun_keyword_parameters(5, param2=2))
-------------------------------------------------------------------------
3
# 关键字参数在前,位置参数在后
print(fun_keyword_parameters(param1=1, 2))
--------------------------------------------------------------------------------
SyntaxError: positional argument follows keyword argument
具体可以看这篇博客: