Python变量和数据类型
1 数据类型
计算机,顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然也可以处理各种数值。
但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据需要定义不同的数据类型。
在Python中,能够直接处理的数据类型有一下几种:
(1)整数 十六进制用0x前綴0-9,a-f表示,如0xff00
(2)浮点数 1.24 1.23e9 1.2e-5
(3)字符串 'abc' "abc"
(4)布尔值 True False 可以用and、or、not进行运算 短路运算
(5)空值 None
0、空字符串、None为false
其他数值、非空字符串为true
2 print语句
print可以向屏幕上输出指定的文字。
>>> print 'hello, world'
用逗号隔开时,每個逗号输出一个空格
>>> print 'The quick brown fox', 'jumps over', 'the lazy dog'
The quick brown fox jumps over the lazy dog
>>> print '100 + 200 = ', 100 + 200
100 + 200 = 300
3 注释
一行之中,#之后的都为注释
4 变量
变量用一个变量名表示,变量名必须是大小写英文、数字和下划线的组合,且不能用数字开头。
等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。
这种变量本身类型不固定的语言称为动态语言,与之对应的是静态语言。
静态语言在定义变量时必须制定变量类型,如果赋值的时候类型不匹配,就会报错,如java。
所以动态语言更加灵活。
变量在计算机内存中的表示:
a='ABC' 计算机干了两件事:
(1)在內存中创建了一个'ABC'的字符串;
(2)在內存中创建了一个名为a的变量,并把它指向'ABC'
a='ABC'
b=a
a='XYZ'
5 定义字符串
如果字符串本身包含引号,可以用另一种引号括起來:
"I'm OK"
'Learn "Python" in mooc'
如果既含单引号,又含双引号,可用\进行转义:
'Bob said\"I\'m OK\".'
常用转义字符:
\n 换行
\t 制表符
\\ 表示\本身
6 raw字符串与多行字符串
在字符串前面加個前綴r,表示这是一个raw字符串,里面字符无需转义。
r'\(~~)/\(~~)/'
但是其不能表示多行字符串,也不能表示包含单引号和双引号的字符串。
如果要表示多行字符串,用三引号:
'''Line1
Line2
Line3'''
等同于'Line1\nLine2\nLine3'
还可以在多行字符串前添加r,变成多行raw字符串。
r'''Python is created by "Guido".
It is free and easy to learn.'''
7 Unicode字符串
字符串还有一个编码问题。
因为计算机智能处理数字,如果要处理文本,就必须把文本转换为数字才能处理。
最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大整数就是255(二进制11111111=十进制255),0-255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。
如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII码冲突,所以,中国制定了GB2312编码,把中文编进去。类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,以解决乱码问题。
Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以了。
因为Python诞生的时间比Unicode标准发布的时间早,所以最早的Python只支持ASCII码,普通的字符串'ABC'在Python内部都是ASCII编码的。
Python在后來添加了对Unicode的支持,用u'...'表示,如
print u'中文'
如果中文字符串遇到UnicodeDecodeError,這是因为.py文件保存的格式有問題。
需要在第一行加注释:
# -*- coding: utf-8 -*-
目的是告诉Python解释器,用UTF-8编码读取源代码,然后另存为UTF-8格式。