3.变量
计算机的RAM内存可以存放程序运行时不断变化的数据和代码指令,ROM内存存放的数据是只读的,一般程序设计者开发的程序里使用的数据不存放在ROM。设计者的程序可以随时要使用这些存放在RAM内存区域里的数据,而RAM的每个内存单元都有具体的地址,但程序通过地址来找到这些可变化的数据邮电费劲,通常高级语言里可给这些存放变化数据的内存单元用一符号来标识,即变量名,变量名代表某(指向)块内存单元。
3.1 什么是变量?
变量是编程语言里重要的基本概念,在各类高级语言里都用变量来代表一块内存区域,某一时刻这块区域里存储了‘a’,又一时刻可能又被存储成了'c', 正是由于该块内存里的值可以随时发生变化,我们称之这个代表内存区域的符号为变量。
3.2 变量的本质
Python程序也是通过变量来访问某块内存里的数据,但Python 里的变量的概念却和C语言里的变量有些不同。
从变量的定义的语法格式上来区分一下不同之处,在C语言里定义一个变量时,需要指定变量的数据类型,变量初始化时,还需依据等号左边变量的数据类型进行相应赋值,否则会出现数据的转换操作,造成不可想象的错误。
int x = 12;//right!
int y = "hello world";//wrong
char s[] = "hello world";//right
int是C语言里可以存储整形数值的数据类型,在32位平台计算机上,可以存储4字节的有正负的整形数据,x是int型的变量最大正整数$2^{32} - 1$ 、最小的负数为$-2^{32}$,这其间的任意整数均可赋值给x变量,而int变量只可接收整形数据,y变量的右边是字符串,故编译时即无法通过。
从上边的例子可以看出C语言的语法较为严格、枯燥,学起来比较的费时费力,通过学习C语言进行程序设计入门有些困难,但如果通过Python语言来学习程序设计就轻松的多,因为从Python定义一个变量来说就很轻松没那么条条框框的严格语法要求,没那么严格就容易学习程序设计,故国外很多知名高校的程序设计语言入门都改选Python语言最为训练从未接触过编程的学生进行编程程序设计入门的基础语言,C语言很优秀,但确实不太适合编程入门。
3.3 Python下定义变量
下面我们来看看Python是如何定义一个变量的。
x = 12
y = "hello world"
就这么简单,x作为变量在系统内存分得一块空间,存储等号右边的12这个整数,y作为变量也在系统内存申请一块空间存放“hello world”这个字符串。
和C定义的int型x变量、字符数组s的功能基本一致。但python定义的变量x和y前边是没有int 和 char等数据类型的,这就是Python,它不严格要求数据的类型比较自由。
3.3.1 语法格式
定义变量一般是借助赋值语句完成的,赋值符号(=)左边是(新建的)变量名,赋值符号右边是数据或者是表达式的结果值。
变量名 = 数据或表达式
在Python 里定义变量不需要指定变量的数据类型,可以将各类数据直接赋值给等号左边的变量,比较自由。
什么是数据
数据是描述信息的量表示,例如描述某物数量的多少可以用数字描述1个、10个、10.5元等有整形和实数(浮点型)之分,描述某人的名字"li ming","wang lijuan"用的是将字符序列前后加上引号的形式,称之为字符串(在Python里单引号、双引号和三引号均可将字符序列引起来构成字符串),而描述真假二值型数据信息可以用布尔值True 和False数据。
>>> s1 = 'li ming1'
>>> s2 = "li ming2"
>>> s3 = '''li ming3'''
>>> s4 = """li ming4"""
>>> print s1, s2, s3, s4
li ming1 li ming2 li ming3 li ming4
3.3.2 Python的变量与内存间的关系
Python的变量名对比于C语言的变量名的区别在于,Python的变量名代表的内存地址是变化的,是上次赋值时新数据所在的内存的地址,而C语言的变量名所执行的地址是不变的,变化的是该地址内存单元的数据。Python变量的变是内存单元地址的变化,而每个内存单元的数据并未变。
a = 12
b = "hello world"
print a, b
a = b
print a, b
如果读者想深究此问题,可以使用一下id函数。
# 查看id函数的帮助
>>> help(id)
# 按字母q推出帮助
>>> a = 12
>>> b = 13
>>> id(a)
23822416
>>> id(b)
23822392
>>> a = b
>>> id(a)
23822392
>>> id(b)
23822392
>>> a = 100
>>> id(a)
23824288
>>> id(b)
23822392
>>> c = 12
>>> id(c)
23822416