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

标签 python python-decorators numba numba-pro

我从 this notebook 学习如何在 GPU 上加速 python 计算,其中一行让我感到困惑:

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

这里,mandel_kernel 是一个装饰函数(由cuda.jit),griddimblockdim 是元组长度为 2:griddim=(32,16)blockdim=(32,8)

函数名和参数列表之间的方括号是 python 语法的一部分,还是 cuda.jit 修饰的特定内容?

最佳答案

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

mandel_kernel 是一个字典,它的键是二元组(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)

关于函数名称和参数之间的 Python 方括号 : func[. ..](...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39485083/

相关文章:

python - 按两列中的值对 NumPy 数组进行排序

python - 元素可点击但 "not attached to the page document"(StaleElementReferenceException)?

具有函数属性的 Python 装饰器

python - 将某种类型的 0 添加到局部变量时,Numba 抖动会改变结果

python - 使用共享内存计算点之间的距离

Python - 如果除法有余数则抛出异常?

python - 解决在 python 中打开 pdf 文件时的路径问题

python - Flask:为什么 app.route() 装饰器应该总是在最外面?

python - 装饰类方法以构建方法注册表

python - Numba python CUDA 与 cuBLAS 简单操作的速度差异