什么是静态变量?
静态变量(Static Variable)在计算机编程领域指在程序执行前系统就为之静态分配(也即在运行时中不再改变分配情况)存储空间的一类变量。
静态变量有什么用?
如名所示,当我们许村静态的,持久的变量时,我们就应该使用静态变量。比如计量某一函数调用了多少次(计数器),比如希望函数总是返回同一变量(懒得传入变量又不想使用global,那样显得不够优雅)。
如何实现静态变量效果?
Python中没有static关键词,所以无法直接显式的表明函数的静态变量。
考虑到Python中的类具有自己的类变量,而这个与类的实例区分开来,具有一定的持久性,所以可以这么做:
class get_static:
static_var = np.array([1,2])
理论上来说,类变量已经可以实现静态变量的效果了。
print(get_static.static_var,id(get_static.static_var))
# 修改变量
get_static.static_var[0] += 1
print(get_static.static_var,id(get_static.static_var))
输出为:
[1 2] 1847752110768
[2 2] 1847752110768
可以看到内存id没有发生变化
这样就可以通过类来实现静态变量,但是如果只是想实现一个带静态变量的函数的话,classA.func()的调用形式还是不够舒服,但是可以通过 fun2 = classA.func
的形式实现fun2()的方便的调用形式。
但是我就是想直接实现fuc3怎么办,当然也是可以的,因为python中处处是对象!!!
def get_static():
if not hasattr(get_static,"static_var"):
get_static.static_var = 1000
return get_static.static_var