Python文档中的这些奇怪括号有什么作用?

3

有人可以帮我理解Python文档中的内容吗?

apply_async(func[, args[, kwds[, callback]]])

(来源于https://docs.python.org/2/library/multiprocessing.html#multiprocessing.pool.multiprocessing.Pool.apply_async)。

在这里,"func"、"args"、"kwds"和"callback"分别代表什么意思并不是很清楚。通常情况下,您需要将一个函数和传递给该函数的参数传递给 apply_async 函数("func"和"args"可能就是这个意思)。但是对于"kwd"或"callback"我就不太清楚了,也不知道为什么方括号会嵌套在一起。请问有人能解释一下吗?

1个回答

2
方括号表示该字段是可选的。您必须传递apply_async函数名称(func),并且可以传递参数、关键字等。
我想这可能在Python风格指南中有提到,尽管我还没有搜索进行验证: https://www.python.org/dev/peps/pep-0008/ (即使这个答案不在其中,这个指南也值得一读!)
编辑:
进一步解释一下 - 如果您有一个不需要任何参数的函数(比如它随机种子并执行一些计算),则可以使用以下方式调用它:
from multiprocessing import Pool
pool = Pool(4) # use four processes

pool.apply_async(function_name)

如果你的函数需要参数,那么这个就可以使用:
pool.apply_async(function_name, argument_name)

或者:

pool.apply_async(function_name, args =(arg1_name, arg2_name))

如果您正在使用关键词:
pool.apply_async(function_name, args=(arg1, arg2, etc), kwds={key_name: value_name})

到目前为止,我还没有使用关键字的理由,参数总是能满足我的需求。可能有一些特殊的深层魔法在关键字中,但是因为我没有碰到过,所以我没有使用它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接