我正在尝试在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代码中使用地板除法运算符(或等效方法)?
答案 0 :(得分:2)
//和// =运算符在开始注释时不可用。
解决方法:您可以改写##,它会自动转换为//。
所以尝试
#![feature(proc_macro_hygiene)]
use inline_python::python;
fn main() {
python! {
print("Hi from PyO3")
foo = 37.46 ## 3
print(foo)
}
}