掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流
眾所周知,python語言并不支持靜態(tài)變量,比如下面這樣一個應用場景:

成都創(chuàng)新互聯-專業(yè)網站定制、快速模板網站建設、高性價比諸暨網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式諸暨網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋諸暨地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。
void foo() {
static int count = 0;
count ++;
}在Python中無法自然實現這個功能。換個角度來看這個問題,函數中的靜態(tài)變量其實可以看做是函數的一個內部變量,而不是調用期間生成的局部變量。所以這里介紹一種使用裝飾器的方法給函數添加這樣的內部變量。
def static_vars(**kwargs): def decorate(func): for k in kwargs: setattr(func, k, kwargs[k]) return func return decorate
這是一個Python裝飾器,通過@語法調用,在一個函數外層再包裹一層,這里相當于給函數添加內部變量??梢赃@樣來使用這個裝飾器,比如我們想實現上面的想法,在foo函數中添加一個計數器,有
@static_vars(counter = 0) def foo(): foo.counter += 1
其實如果一定要通過內部變量來實現靜態(tài)的效果,可以直接定義類來達到,但是裝飾器將很多細節(jié)略去,而且通過**kwargs可以添加任意類型,任意數目,實現起來相對簡單。
眾多python培訓視頻,盡在python學習網,歡迎在線學習!

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流