python - 如何在后面的参数中引用函数调用的前面的参数?

标签 python micropython

这是在 micropython 中

我正在创建一个 API 来控制某些硬件。该 API 将使用 C 语言实现,并使用 micropython 中的接口(interface)。

我的 API 的一个示例是:

device.set(curr_chan.BipolarRange, curr_chan.BipolarRange.state.ON)

我希望能够实现相同的功能,但通过以某种方式隐式引用第一个参数来缩短第二条路径:

device.set(curr_chan.BipolarRange, <first arg?>.state.ON)

有办法做到这一点吗?

现在做这样的事情的唯一方法是

device.set(curr_chan.BipolarRange.state.ON)

然后在 ON C 对象和 state C 对象上放置一个向上的 C 指针,以便我知道 curr_chan< 中的哪个条目 正在被引用。

micropython 运行时(我假设是 CPython 运行时)不会将整个对象“树”保留在内存中供开发人员使用。

最佳答案

您可以为第二个(状态)参数指定特殊值,告诉函数实现从第一个参数导出状态。您还可以引入一个具有此行为的完全独立的函数。

或者您可以有一个辅助函数来确定状态并将其传递给 set 函数,如下所示:

device.set(*state_ON(curr_chan.BipolarRange))

这里,state_ON 将返回一个元组(curr_chan.BipolarRange, curr_chan.BipolarRange.state.ON)

无论如何,Python 本身并没有直接支持你想要做的事情。

关于python - 如何在后面的参数中引用函数调用的前面的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51469178/

相关文章:

python - python 中深度复制的替代方案

python - python中如何实现Leaky Relu的导数?

python - 从 GtkTreeView 获取完整文件路径

I2C 无法在带有 MicroPython 的 Raspberry Pi Pico W 上工作

c - 堆栈粉碎检测到STM32f7

python - 如何使用 micropython 控制插入 BBC microbit 的水泵的速度

python - 在不分配新对象的情况下用特定值填充列表的一部分

python - pygtk强制抓取键盘焦点

python - 当列表值与 Pyspark 数据框中列值的子字符串匹配时填充新列

python - 使用 MicroPython 加载和编译没有系统文件的 python 文件