Python 回调函数占位符?

标签 python callback blender collision

我想在列表中添加一个回调函数,它会导致在适当的时候用一个参数调用回调。但是,我也希望回调也传递给另一个变量。

注意:我习惯于在 C++ 中使用 std::bindboost::bind,所以我一直在寻找类似的东西。

注意:顺便说一句,这是在 Python 中。

碰撞问题示例:

def collision_callback(hit, hitter)
     # doing something relevant...

object = create_object()
collision_callbacks.append(collision_callback(_1, object)) # _1 is a placeholder from C++ lol.
                                                      # as you can see here _1 is expected
                                                      # to be filled in with the hit object.

最佳答案

您可以使用 lambda :

>>> def minus(a, b):
...     return a - b
... 
>>> minus1 = lambda x: minus(x, 1)
>>> minus1(3)
2

或者,您也可以使用 functools.partial :

>>> minus1 = functools.partial(minus, b=1)
>>> minus1(4)
3

但是一些内置函数不接受关键字参数。然后回到 lambda

>>> print(operator.sub.__doc__)
sub(a, b) -- Same as a - b.
>>> minus1 = functools.partial(operator.sub, b=1)
>>> minus1(5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sub() takes no keyword arguments

>>> minus1 = lambda x: operator.sub(x, 1)
>>> minus1(9)
8

如果您预填充前导参数(从第一个参数填充值),这无关紧要:

>>> minus_from_10 = functools.partial(operator.sub, 10)
>>> minus_from_10(7)
3

关于Python 回调函数占位符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19701775/

相关文章:

python - typeError 帮助,plt.scatter 将我的 .csv 读取为真/假而不是数值

UIButton 点击​​时的 IOS 回调

opengl - 我可以在 OpenGL 中使用不同的多 GPU 吗?

java - 使用 Chilli Source 模型导出器导出空或基于节点的 blender 模型

python - Sage 中具有未知数的排列向量

python - 计算文本文件中每个汉字的出现次数

python - Pyspark 内存不足窗口函数

javascript - 如何将 res.json 作为回调函数传递?

javascript - JQuery/JavaScript中的回调

python - 无法使用 pip 安装包 bpy