字符编码:
为什么要有字符编码?字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"0","1".
字符编码其实就是在完成一件,字符====>数字的翻译过程.
ASCII:
最早计算机是美国发明的,所以最早诞生的ASCII码也是基于英文考虑的.ASCII码:一个Bytes代表一个字符,1Bytes=bit.最早的ASCII只用到后七位.
127个数字,已经完全能代表键盘了,后来又把127号之后的空位来表示新的字母、符号,还加入了很多画表格时需要用下到的横线、竖线、交叉等形状,一直把序号编到了最后一个状态255。从128 到255这一页的字符集被称”扩展字符集“。
GBK标准:
等到中国使用计算机的时候,已经没有可利用的字节状态来表示汉字了,所以中国人发明了GBK标准,一个字符等于两个Bytes.GBK包括了GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。 后来少数民族也要用电脑了,于是我们再扩展,又加了几千个新的少数民族的字,GBK扩成了 GB18030。这一系列汉字编码的标准叫做 “DBCS“(Double Byte Charecter Set 双字节字符集).
UNICODE:
由于各国都有自己的一套像中国一样的编码标准,互相之间又看不懂对方的编码.所以ISO(国际标准化组织)制定了一种新的编码”Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “unicode“.unicode规定必须用两个字节,也就是16位来统一表示所有的字符,对于ASCII里的那些“半角”字符,unicode包持其原编码不变,只是将其长度由原 来的8位扩展为16位,而其他文化和语言的字符则全部重新统一编码。由于”半角”英文符号只需要用到低8位,所以其高8位永远是0,因此这种方案在保存英文文本时会多浪费一倍的空间.
UTF-8
UTF-8,对英文字符只用1Bytes表示,对中文字符用3Bytes.
补充:
计算机内存中使用的编码是unicode,用空间来换取时间,而硬盘或者网络传输则使用的是utf-8,来达到节省空间的目的.
计算机在存取数据的时候,以什么格式存的就需要以什么格式来解码.例如:数据在内存中使用unicode编码来保存,当数据要刷入硬盘时,就需要把数据用utf-8的标准转换成Bytes(二进制),保存在硬盘上,读取的时候就需要用utf-8的标准转换成unicode,如果保存和读取使用的编码不同会导致乱码.
python中的字符编码:
当我们在写一个Python文件的时候,这时候写的东西其实就是字符串,跟Python的命令没有任何关系,Python是一种解释语言,当我们用Python解释器去运行我们写的代码时,解释器会按照代码头声明的字符编码,先去硬盘读取数据,使用声明的字符编码解码转换成unicode编码,然后在解释执行.
python3三中,默认使用的编码是unicode编码,Python2中则需要手动指定,否则代码无法正常运行.Python2中的 str默认存的是Bytes.而不是像Python3一样默认存的是unicode.
Python使用 encode和decode 两个参数命令来编码和解码.
文件处理:
打开文件:
f = open(‘a.txt‘,‘w‘,encoding=‘utf-8‘)
#encoding 定义文件的读取方式 w表示覆盖写入打开,a是追加写入文件内容, r是只读模式
#rb,wb,ab 以Bytes读取文件,二进制模式 不需要指定encoding
f.write(‘安居客活动卡收到类似的看了\n3213213213213213\n‘)
#写入字符串 无自动换行 需加\n #同read Bytes模式
f = open(‘a.txt‘,encoding=‘utf-8‘)
print(f.read()) #读取文件所有内容,并打印出来 ()内写数字,根据字符来确定光标位置
#当以Bytes方式读取文件时,需要指定 encoding来正常显示
#关闭打开的文件
f.close()
#立即刷入写入内容
f.flush()
#判断文件是否关闭
f.closed
#查看文件名和字符编码
f.name,f.encoding
#移动光标
f.seek(0) #以文件起始作为参考,()内是字节来移动 (3,0/1/2) 0/1/2 分别代表 文件起始/当前位置/文件末尾
#告知当前光标位置
f.tell()
#截断(写操作) ()也是字节来判断
f.truncate()
函数:
一 为何要有函数?
不加区分地将所有功能的代码垒到一起,问题是:
代码可读性差
代码冗余
代码可扩展差
如何解决?
函数即工具,事先准备工具的过程是定义函数,拿来就用指的就是函数调用
结论:函数使用必须是:先定义,后调用
二:函数的分类
1.内置函数:built-in
2.自定义函数:
def 函数名(参数1,参数2,...):
‘‘‘注释‘‘‘
函数体
示例:
def a(t,c,h): #传入三个参数,定义t:打印什么,c打印多少次,h打印几行
for i in range(h): #for循环,循环为h的次数
print(t*c) #打印内容t 和次数
定义函数分类
定义无参函数: 不依赖外部参数运行
def print()
print(‘111111‘)
定义有参函数: 依赖外部参数运行
def a(t,c,h):
for i in range(h):
print(t*c)
定义空函数: 函数体为pass
def <函数名>(x,y,z)
pass