gpt4 book ai didi

python - Cython .pyx 中定义的函数成为内置函数?

转载 作者:太空宇宙 更新时间:2023-11-04 02:41:09 26 4
gpt4 key购买 nike

我正在玩 cython 教程 ( http://docs.cython.org/en/latest/src/tutorial/cython_tutorial.html )

我有一个这样的目录:

somedir/ExampleCython.py
somedir/fib.pyx
somedir/fib.so
somedir/function_file.py
somedir/setup.py

fib.pyx 定义了上面链接的 cython 教程中的 fib 函数,function_file.py 包含以下定义:

def moopy(param):
param += 1
return param

ExampleCython.py 包含以下内容:

import fib as moo

print moo.fib

from function_file import moopy

print moopy

我使用 python setup.py build_ext --inplace 构建 fib.so,然后我运行 python ExampleCython.py 并得到以下输出:

<built-in function fib>
<function moopy at 0x1002b4398>

现在,我知道没有名为 fib 的内置 Python,为了测试,我尝试将名称“fib”更改为“poopypants”之类的愚蠢名称,但它仍然说它是内置的。 fib 函数的命名空间发生了什么?我在其他地方的一个更大的代码块中遇到了这个问题,这阻止了我对我创建的类进行 pickle - pickle 提示它在它所属的模块中找不到我的函数 - 但我想我会简化它在这里提问。

供引用 - OSX 10.12.6 上的 python 2.7.11/cython 0.26

最佳答案

这已在评论中解决,但作为完整性的答案发布:

Python 将这些函数描述为“内置函数”纯粹是指它是用 C 语言编译的,而不是指它是标准库函数,因此存在问题 - 正确的函数在正确的模块。

在我的电脑上显示为 <cyfunction module.function_name at 0xsome_address>这是一条更有帮助的信息。我认为这可能是 Python 3 的改进(但我不是 100% 确定)。

关于python - Cython .pyx 中定义的函数成为内置函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46494401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com