小编Iai*_*ist的帖子

scipy.special导入问题

我有一个导入scipy.special包的问题.它没有害处,只是讨厌/有趣.

当我导入scipy使用import scipy as sp然后尝试访问sp.special我得到:

>>> import scipy as sp
>>> sp.special
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'special'
>>>
Run Code Online (Sandbox Code Playgroud)

但如果我那么做import scipy.special,我可以通过访问特殊模块scipy.specialsp.special:

>>> import scipy as sp
>>> import scipy.special
>>> scipy.special
<module 'scipy.special' from 'C:\Python27\lib\site-packages\scipy\special\__init__.pyc'>
>>> sp.special
<module 'scipy.special' from 'C:\Python27\lib\site-packages\scipy\special\__init__.pyc'>
>>>
Run Code Online (Sandbox Code Playgroud)

所以我现在special可以通过命名空间spscipy命名空间访问模块.有趣的是,我可以通过scipy命名空间访问其余的scipy .

第一个问题:为什么special模块不能第一次导入?

第二个问题:如何 …

python scipy

16
推荐指数
1
解决办法
2万
查看次数

获取ctypes指针指向的内存地址

简短版本:如何获取ctypes指针指向的地址?

长版:我已经将python函数注册为带有C库的回调.C库需要函数签名,void (*p_func)(char stat, char * buf, short buf_len)所以我注册了一个合适的python函数.当我进入python函数时,我想知道指向的内存地址buf.我怎样才能做到这一点?

python ctypes

8
推荐指数
2
解决办法
7928
查看次数

GCC不优化未初始化的静态const的结构副本

首先,我正在为微控制器开发,因此RAM和ROM的使用是优先考虑的事项.

我意识到这可能是一个错误报告,或者不够具体.如果我在这里没有得到任何答案,我会这样提出.

我喜欢使用static const结构将堆栈结构初始化为默认值.在大多数情况下,默认结构都是零.我更喜欢使用static const结构而不是memset(memset或struct赋值,静态const赋值)

我目前的工具链是arm-none-eabi-gcc-4_7_3,通过优化编译Cortex M4目标-Os.

我注意到了以下几点; GCC产生不同的代码,如果我明确我的初始化static const结构以零比如果我不这么做(static const struct foo;VS static const struct foo = {0};).特别是,它将未初始化的static const结构分配给内存并执行复制操作.

这是一个代码示例:

struct foo {int foo; int bar;};
struct bar {int bar[20];};

static const struct foo foo1_init, foo2_init = {0};
static const struct bar bar1_init, bar2_init = {0};

extern struct foo foo1, foo2;
extern struct bar bar1, bar2;

void init_foo1(void) …
Run Code Online (Sandbox Code Playgroud)

c optimization gcc struct

7
推荐指数
1
解决办法
348
查看次数

如何使用python将数组传递给用c编写的共享库(.dll)

test.dll文件的功能代码:

double __cdecl add(int len,double array[]){}
Run Code Online (Sandbox Code Playgroud)

(我在vc中测试过)

python代码:

import ctypes
from ctypes import *

N=...
arr=(c_double*N)()
...
...
dll=CDLL("test.dll")
sum=dll.add(c_int(N),byref(arr))

print sum
Run Code Online (Sandbox Code Playgroud)

但是python代码不起作用,并且"sum"总是等于N.(当N = 10时ig,它打印"sum = 10")它有什么问题?

c python arrays dll ctypes

4
推荐指数
1
解决办法
5684
查看次数

标签 统计

python ×3

c ×2

ctypes ×2

arrays ×1

dll ×1

gcc ×1

optimization ×1

scipy ×1

struct ×1