在Python互操作中如何将Mojo函数传递给Python?
在Mojo和Python互操作中传递Mojo函数到Python的解决办法
你碰到的这个错误,核心原因是Mojo函数不能直接传递给Python模块——Python无法识别原生的Mojo函数类型,必须先把它转换成Python兼容的对象。
修正后的代码示例
main.mojo
from python.python import Python def callback() -> Int: return 5 def main(): Python.add_to_path(".") let test_module = Python.import_module("lib") # 把Mojo函数转换为Python可识别的对象 let py_callback = Python.to_python(callback) print(test_module.test_interop(py_callback))
lib.py(无需修改)
def test_interop(func): return func()
原理说明
Python.to_python()是Mojo Python互操作API提供的工具,它能将Mojo的函数(以及其他支持的类型)转换成Python可以调用的PythonObject,完美解决类型不匹配的问题。运行修改后的代码,就能正常输出5,不会再出现之前的类型转换错误。
内容的提问来源于stack exchange,提问作者HKTonyLee
相关产品推荐
相关产品推荐

