0

我正在尝试在 Rust 中内联 Python 代码,但是当 Python 代码具有用于地板除法的运算符时,它会失败,//就像它是 Rust 注释一样被忽略。

例如:

#![feature(proc_macro_hygiene)]
use inline_python::python;

fn main() {
    python! {
        print("Hi from PyO3")
        foo = 37.46 // 3
        print(foo)
    }
}

37.46即使它应该打印,它也会打印12.0(37.46 除以 3 的结果)。

一个可能的解决方案是将这个除法替换为foo = math.floor(37.43 / 3),但如果可能的话,我宁愿不必修改 Python 代码。我也担心它可能会影响性能。

有没有办法在使用 PyO3 嵌入 Rust 代码的 Python 代码中使用地板除法运算符(或等效运算符)?

4

1 回答 1

2

文档中

// 和 //= 运算符不可用,因为它们开始注释。

解决方法:您可以改写##,它会自动转换为 //。

所以试试

#![feature(proc_macro_hygiene)]
use inline_python::python;

fn main() {
    python! {
        print("Hi from PyO3")
        foo = 37.46 ## 3
        print(foo)
    }
}
于 2019-12-17T15:36:49.517 回答