变量
当写:a=‘xxx’时,Python解释器干了两件事情:1、在内存中创建了一个'xxx'的字符串;2、在内存中创建了一个名为a的变量,并把它指向'xxx'。
也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码:
a = 'xxx'
b = a
a = 'yyy'
print(b)
最后一行打印出变量b的内容是‘xxx’还是'yyy'呢?如果从数学意义上理解,就会错误地得出b和a相同,也应该是'yyy',但实际上b的值是'xxx'。
执行a='xxx',解释器创建了字符串‘xxx’和变量a,并把a指向'ABC';执行b=a,解释器创建了变量b,并把b指向a指向的字符串'xxx'。
执行a='yyy',解释器创建了字符串'yyy',并把a的指向改为'yyy',但b并没有更改。所以,最后打印变量b的结果自然是'xxx'了。
字符串和转义字符串
字符串可以用单引号' '或者双引号" "括起来表示。
如果字符串本身含有单引号和双引号,还可以使用转义字符\
如:要表示字符串 Bob said “I’m OK”.
可以使用转义字符 ‘Bob said \”I\’m OK\”.’
转义字符\不计入字符串的内容。
常用的转义字符还有:1、\n表示换行 2、\t表示一个制表符 3、\表示\字符本身
raw字符串
如果一个字符串里包含很多需要转义的字符,对每一个字符进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀r,表示这是一个raw字符串,里面的字符就不需要转义了。例如:r'\(^_^)/ \(~_~)/' raw字符串表示原始字符串
多行显示
Python中除了可以使用单引号' '、双引号" "表示一个字符串,还可以使用三引号来表示一个字符串
''' '''。单引号和双引号不能用来表示多行显示,而三引号可以,
print(r'''zhang zhang zhang
zzzzzzz
aaaaaaaaa
bbbbbbbb''')
zhang zhang zhang
zzzzzzz
aaaaaaaaa
bbbbbbbb
Unicode编码
计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。
如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。
UnicodeDecodeError处理
如果中文字符串在Python环境下遇到 UnicodeDecodeError
,这是因为.py文件保存的格式有问题。可以在第一行添加注释# -*- coding: utf-8 -*- 目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++ 另存为… 并选择UTF-8格式保存。