大家知道什么是变量吗?可能学过编程的人对这个概念印象会比较深?我没系统的学过编程,我是自学的,按我的理解变量就是程序运行的时候可以改变的量,但是同样是变量,有些变量就被称为动态变量,有些变量就被称为静态变量,这个静态到底是什么意思那?
我告诉大家,静态的意思就是在程序运行的过程中,其内存地址始终不变,可以对其进行连续操作,而动态变量每次使用都会重新进行初始化,无法进行连续操作,可能这种解释还是比较晦涩,给大家展示两个图。
上面是程序代码,下面是输出的结果,代码的结构应该说是相当简单,这个我就不解释了,子函数的功能就是定义一个变量,然后给变量加1,并输出结果,而主函数负责调用两次子函数,我们看到动态变量两次输出的结果是相同的,而静态变量第二次输出的结果是在第一次输出的结果上加了1,看到这里,是不是就理解了什么是静态变量了那?
简单的说,动态变量每次调用的时候是不同的变量,而静态变量每次调用的时候是同一个变量,几乎每一种语言默然的变量都是动态变量,包括C和python,在python里没有静态变量这个概念,只有类变量类似静态变量,也给大家举个例子。
这是两个python代码的例子,涉及到了类,第一个代码操作的是类属性,第二个代码操作的是实例属性或者叫对象属性,类只有一个,从类中衍生出来的对象有很多个,比如人就是一个类,小明、小红、小猪是三个不同的对象,人都有两只眼睛,一张嘴,这属于类属性,从这个类中衍生出来的对象也都有这样的属性,但是小明有100万,小红有10万,这就是对象属性,不同对象之间的属性不相互影响,类属性类似静态的,实例属性就是类似动态的,听完我这个解释是不是更迷糊了。没关系,python的例子可以不看,把c语言的搞明白就行了。
在不涉及对象操作的时候,不设置静态变量也是可以的,这也是python为什么没有内置静态变量的原因,C语言诞生太早了,那个时候可能出于内存管理的原因,C语言做了很多现在看起来没用的设计,比如在python中循环只有for和while两种写法,但是在c语言里就有for,foreach,while,dowhile等多种写法,python中的两种循环完全可以取代c语言的四种循环,不过由于C语言的使用者实在太多了,即使在后期的版本更新里,c语言的很多属性还是遗传下来了。