plx*_*plx 5 python global-variables cython jupyter-notebook
我有一些变量应该可以在程序中全局访问。由于它们被如此频繁地使用,我正在考虑为它们提供一种类型,据我所知,这种类型可以加快速度。
我无法做到这一点。在 Jupyter Notebook 的一个块中,我有以下内容:
%%cython
cdef int magic_number = 42
Run Code Online (Sandbox Code Playgroud)
在下一个块中,我收到以下错误:
print(magic_number)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-34-a40fcb730ac3> in <module>()
----> 1 print(magic_number)
NameError: name 'magic_number' is not defined
Run Code Online (Sandbox Code Playgroud)
cpdef也不起作用。如何获取全局变量?
这与问题“在 Jupyter cdef 中运行 Cython ”非常相似 -cdef无法从 Python 访问对象。
如果您希望可以从 Python 访问该变量,则只需以正常的 Python 方式声明它即可
magic_number = 42
Run Code Online (Sandbox Code Playgroud)
请注意,您无法键入这些变量。我认为没有任何方法可以使用 Python C API 创建“模块属性”来访问 C 变量,因此 Cython 无法做到这一点。如果这些变量在 Cython 中输入很重要,那么您将必须创建访问器函数以从 Python 与它们交互:
%%cython
cdef int magic_number = 42
def get_magic_number():
global magic_number # not strictly necessary, but clearer
return magic_number
def set_magic_number(int value):
global magic_number # necessary
magic_number = value
Run Code Online (Sandbox Code Playgroud)
(请注意,这cpdef仅适用于函数,对于变量定义没有意义。)
| 归档时间: |
|
| 查看次数: |
2636 次 |
| 最近记录: |