Python中什么是变量
在Python中,变量的概念基本上和初中代数的⽅程变量是⼀致的。python是做什么的通俗易懂的
例如,对于⽅程式y=x*x ,x就是变量。当x=2时,计算结果是4,当x=5时,计算结果是25。
只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
在Python程序中,变量是⽤⼀个变量名表⽰,变量名必须是⼤⼩写英⽂、数字和下划线(_)的组合,且不能⽤数字开头,⽐如:
a = 1
变量a是⼀个整数。
t_007 = 'T007'
变量t_007是⼀个字符串。
在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同⼀个变量可以反复赋值,⽽且可以是不同类型的变量,例如:
a = 123    # a是整数
print a
a = 'imooc'  # a变为字符串
print a
这种变量本⾝类型不固定的语⾔称之为动态语⾔,与之对应的是静态语⾔。
静态语⾔在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语⾔,赋值语句如下(// 表⽰注释):
int a = 123; // a是整数类型变量
a = "mooc"; // 错误:不能把字符串赋给整型变量
和静态语⾔相⽐,动态语⾔更灵活,就是这个原因。
请不要把赋值语句的等号等同于数学的等号。⽐如下⾯的代码:
x = 10
x = x + 2
如果从数学上理解x = x + 2那⽆论如何是不成⽴的,在程序中,赋值语句先计算右侧的表达式x + 2,得到结果12,再赋给变量x。由于x之前的值是10,重新赋值后,x的值变成12。
最后,理解变量在计算机内存中的表⽰也⾮常重要。当我们写:a = 'ABC'时,Python解释器⼲了两件事情:
1. 在内存中创建了⼀个'ABC'的字符串;
2. 在内存中创建了⼀个名为a的变量,并把它指向'ABC'。
也可以把⼀个变量a赋值给另⼀个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下⾯的代码:
a = 'ABC'
b = a
a = 'XYZ'
print b
最后⼀⾏打印出变量b的内容到底是'ABC'呢还是'XYZ'?如果从数学意义上理解,就会错误地得出b和a相同,也应该是'XYZ',但实际上b的值是'ABC',让我们⼀⾏⼀⾏地执⾏代码,就可以看到到底发⽣了什么事:
执⾏a = 'ABC',解释器创建了字符串  'ABC'和变量 a,并把a指向 'ABC':
执⾏b = a,解释器创建了变量 b,并把b指向 a 指向的字符串'ABC':
执⾏a = 'XYZ',解释器创建了字符串'XYZ',并把a的指向改为'XYZ',但b并没有更改:
所以,最后打印变量b的结果⾃然是'ABC'了。