函数名和参数之间的Python方括号:func [...](...)

时间:2016-09-14 07:46:01

标签: python python-decorators numba numba-pro

我正在学习如何从this notebook加速GPU上的py​​thon计算,其中一行让我困惑:

mandel_kernel[griddim, blockdim](-2.0, 1.0, -1.0, 1.0, d_image, 20)

此处mandel_kernel是一个装饰的(cuda.jit)函数,griddimblockdim是长度为2的元组:griddim=(32,16),{{1} }。

这个方括号是在python语法的函数名和参数列表部分之间,还是特定于blockdim=(32,8)装饰的东西?

1 个答案:

答案 0 :(得分:5)

这是有效的python语法,我会尝试为你分解:

mandel_kernel是一个dict,其键是2元组(griddim,blockdim),值是方法(因为方法是python中的对象,所以它是有效的)

mandel_kernel[griddim, blockdim]因此'返回'(或评估)方法

因此,

mandel_kernel[griddim, blockdim](-2.0, 1.0, -1.0, 1.0, d_image, 20)使用括号内的任何参数调用该方法。

这一行可以用三行重写:

key = tuple(griddim, blockdim)
method = mandel_kernel[key]
method(-2.0, 1.0, -1.0, 1.0, d_image, 20)