我在同一個模塊的所有功能,使用許多變量與同類型:在函數外部用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