我在同一个模块的所有功能,使用许多变量与同类型:在函数外部用cdef声明的变量在函数内部是否具有相同的类型?
def func1(double x):
cdef double a,b,c
a = x
b = x**2
c = x**3
return a+b+c
def func2(double x):
cdef double a,b,c
a = x+1
b = (x+1)**2
c = (x+1)**3
return a+b+c
我的问题是,会是如果我做了如下图所示的一样吗?变量声明放在函数之外? (真实的情况是不同的,并且具有2个以上的函数)
cdef double a,b,c
def func1(double x):
a = x+2
b = (x+2)**2
c = (x+2)**3
return a+b+c
def func2(double x):
a = x+2
b = (x+2)**2
c = (x+2)**3
return a+b+c
谢谢!这个玩具的例子远没有真正的代码,但我发现,使用全局变量可以在不使用'global'语句的情况下完成,你试过了吗? –
我接受了你的答案,因为明确使用'global'似乎比省略它更快 –
afaik任何赋值都为python中的赋值变量隐式分配空间。我想,这就是发生了什么,当你省略'global'时,因此你最终会再次使用(慢)Python对象。另一方面,当你只是使用它们(没有重新分配)当然可行,因为它们在功能范围内也是有效的。 – aepsil0n