The brackets indicate that the field is optional. You MUST pass apply_async a function name (func) and you CAN pass it arguments, keywords, etc.
I would imagine that it is in the python style guide, though I haven't searched to verify:
https://www.python.org/dev/peps/pep-0008/
(the guide's worth a read even if this answer isn't in there!)
EDIT:
To expand upon this - if you have a function that does not take any arguments (say it randomly seeds itself and then performs some calculations) you could call it with:
from multiprocessing import Pool
pool = Pool(4) # use four processes
pool.apply_async(function_name)
if your function requires arguments, then this works:
pool.apply_async(function_name, argument_name)
or:
pool.apply_async(function_name, args =(arg1_name, arg2_name))
if you are using keywords:
pool.apply_async(function_name, args=(arg1, arg2, etc), kwds={key_name: value_name})
so far, I have not had reason to use keywords, arguments have always done what I've needed. There could be special deep magic in kwds that I left out because it hasn't come up for me.