一、 整数:
Python可以处理任意大小的整数,当然包括负整数
二、 浮点数
浮点数也就是小数,之所以称为浮点数
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。
三: 字符串
字符串是以
''
或
""
括起来的任意文本,比如
'abc'
,
"xyz"
等等。
四: 布尔值
一个布尔值只有
True
、
False
两种值
布尔值可以用
and
、
or
和
not
运算。
五: 空值
空值是Python里一个特殊的值,用
None
表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
变量:
在Python程序中,变量是用一个变量名表示,变量名必须是 大小写 英文、数字和_的 组合,且不能用数字开头
在Python中,等号
=
是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,例如:
a = 123 # a是整数 print a a = 'imooc' # a变为字符串 print a
这种变量本身类型不固定的语言称之为 动态语言 ,与之对应的是 静态语言。
静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,
当我们写:
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'
了。
,Python字符串用
\
进行转义。
\n 表示换行 \t 表示一个制表符 \\ 表示 \ 字符本身
因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串 'ABC' 在Python内部都是 ASCII编码 的。
Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,比如:
print u'中文' 中文
注意: 不加 u ,中文就不能正常显示。
转义:
u'中文\n日文\n韩文'
多行:
u'''第一行 第二行'''
raw+多行:
ur'''Python的Unicode字符串支持"中文", "日文", "韩文"等多种语言'''
如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释
# -*- coding: utf-8 -*-
目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++ 另存为... 并选择UTF-8格式保存。
Python的 整数运算结果仍然是整数,浮点数运算结果仍然是浮点数 :
1 + 2 # ==> 整数 3 1.0 + 2.0 # ==> 浮点数 3.0
但是 整数和浮点数混合运算的结果就变成浮点数了:
1 + 2.0 # ==> 浮点数 3.0
为什么要区分整数运算和浮点数运算呢
?这是因
为整数运算的结果永远是精确的,
而浮
点数运算的结果不一定精确
,因为计算机内存再大,也无法精确表示出无限循环小数,比如
0.1
换成二进制表示就是无限循环小数。
Python的除法运算和java一样。/ 是整除。%是取余。
在Python中,布尔类型还可以与其他数据类型做 and、or和not运算,请看下面的代码:
a = True print a and 'a=T' or 'a=F'
计算结果不是布尔类型,而是字符串 'a=T',这是为什么呢?
因为Python把
0
、
空字符串''
和
None
看成
False
,
其他数值
和
非空字符串
都看成
True
,所以:
True and 'a=T' 计算结果是 'a=T' 继续计算 'a=T' or 'a=F' 计算结果还是 'a=T'
要解释上述结果,又涉及到 and 和 or 运算的一条重要法则: 短路计算 。
1. 在计算
a and b
时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
2. 在计算
a or b
时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。