我用用Cython教程(http://docs.cython.org/en/latest/src/tutorial/cython_tutorial.html)Cython .pyx中定義的函數變得內置了嗎?
玩,我有一個目錄,如下所示:
somedir/ExampleCython.py
somedir/fib.pyx
somedir/fib.so
somedir/function_file.py
somedir/setup.py
凡fib.pyx從上面鏈接的用Cython教程,function_file.py定義函數FIB包含以下定義:
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>
現在,我知道有沒有內置蟒蛇-in叫做fib,只是爲了測試我試着把名字'fib'改成'poopypants'這樣的傻名字,而且它仍然說它是內置的。 fib函數的命名空間發生了什麼?我在其他地方的一個更大的代碼塊中遇到了這個問題,這阻止了我創建一個我創建的類 - pickle抱怨說它無法在它所屬的模塊中找到我的函數 - 但我想我會簡化它問題在這裏。
僅供參考 - 蟒蛇2.7.11 /用Cython 0.26在OSX 10.12.6
「內置」是誤導 - 它只是意味着它是一個在C庫中實現的函數(就像您期望的那樣)。你可能更好地創建一個[mcve]來說明你的pickle問題(這似乎是你真正想要解決的問題) – DavidW
好的,那麼我應該怎麼做呢?使用更新的示例編輯它,或關閉它或將其標記爲回答或其他內容? –
我想編輯這個問題。由於沒有人回答,所以我認爲對它進行相當大的編輯並不是問題。 (雖然你的選擇 - 兩個選項都是合理的!) – DavidW