gpt4 book ai didi

python - 在 pythoncode block 中使用模块定义的常量

转载 作者:行者123 更新时间:2023-11-30 02:37:57 25 4
gpt4 key购买 nike

我的 C 代码定义了一个常量,我正在尝试添加使用该常量的 python 代码(在 pythoncode block 中),由于某种原因,这不起作用。

演示.i文件:

%module test
%{
// c code defines a static constant
static const int i=3;
%}

// declare the constant so that it shows up in the python module
static const int i;

%pythoncode %{
# try to use the constant in some python code
lookup={'i':i,}
%}

这是错误:

[dave]$ python -c "import test"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "test.py", line 70, in <module>
lookup={'i':i,}
NameError: name 'i' is not defined

如果我注释掉 pythoncode block 中的 lookup 字典,一切正常:

[dave]$ python -c "import test; print test.i"
3

所以至少当我导入模块时常量出现了。

如何在我的 pythoncode block 中“查看”C 定义的常量?

痛饮 2.0.4, python 2.7。

最佳答案

Adding additional Python code %pythoncode 的状态:

This code gets inserted in to the .py file created by SWIG.

所以让我们跟踪生成的 test.py:

# try to use the constant in some python code
lookup={'i':i,}

# This file is compatible with both classic and new-style classes.

cvar = _test.cvar
i = cvar.i

在定义 i 之前插入了 %pythoncode。由于这是第一次也是唯一一次出现,您可能需要直接使用 _test.cvar.i :

%pythoncode %{
# try to use the constant in some python code
lookup={'i': _test.cvar.i,}
%}

关于python - 在 pythoncode block 中使用模块定义的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31347788/

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