0
点赞
收藏
分享

微信扫一扫

Python基础之变量和常量


Python初学目录:​​点击打开链接​​

Python学习推荐网址:​​点击打开链接​​

变量

变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。

变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头,比如:

a = 1

变量​​a​​是一个整数。

t_007 = 'T007'

变量​​t_007​​是一个字符串。

Answer = True

变量​​Answer​​​是一个布尔值​​True​​。

在Python中,等号​​=​​是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量

这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下(// 表示注释):

请不要把赋值语句的等号等同于数学的等号。比如下面的代码:

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'​​:

Python基础之变量和常量_Python


执行​​b = a​​​,解释器创建了变量​​b​​​,并把​​b​​​指向​​a​​​指向的字符串​​'ABC'​​:

Python基础之变量和常量_字符串_02


执行​​a = 'XYZ'​​​,解释器创建了字符串'XYZ',并把​​a​​​的指向改为​​'XYZ'​​​,但​​b​​并没有更改:

Python基础之变量和常量_赋值_03


所以,最后打印变量​​b​​​的结果自然是​​'ABC'​​了。

常量

所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量:

PI = 3.14159265359

但事实上​​PI​​​仍然是一个变量,Python根本没有任何机制保证​​PI​​​不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改变变量​​PI​​的值,也没人能拦住你。

最后解释一下整数的除法为什么也是精确的。在Python中,有两种除法,一种除法是​​/​​:

/

3.3333333333333335

​/​​除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数:

/

3.0

还有一种除法是​​//​​,称为地板除,两个整数的除法仍然是整数:

>>>

3

你没有看错,整数的地板除​​//​​​永远是整数,即使除不尽。要做精确的除法,使用​​/​​就可以。

因为​​//​​除法只取结果的整数部分,所以Python还提供一个余数运算,可以得到两个整数相除的余数:

%

1

无论整数做​​//​​除法还是取余数,结果永远是整数,所以,整数运算结果永远是精确的。

小结

Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。

对变量赋值​​x = y​​​是把变量​​x​​​指向真正的对象,该对象是变量​​y​​​所指向的。随后对变量​​y​​的赋值不影响变量​​x​​的指向。

 

举报

相关推荐

0 条评论