1.数据类型、变量和常量
- 整数,浮点数,字符串,布尔值/布尔代数,空值。
1).整数和浮点数在计算机内部的存储方式是不同的,
整数运算时结果是永远精确的,浮点数则会有四舍五入的误差。
python对整数的大小没有限制,浮点数也没有大小限制,但是超出一定范围就直接表示为inf
(无限大)。
2).字符串:
'as'/"as"都可以用来表示字符串。
\ 为转义字符:
r''
表示''
内部的字符串默认不转义:
'''...'''
的格式表示多行内容:
3).布尔值:知道and,or,not的用法就好
4).空值:None表示空值,与数字0还是有区别的,数字0有意义,None只是一个特殊的空值。
- 变量:动态语言和静态语言
变量类型本身是不固定的:动态语言;更灵活
定义变量时必须制定变量类型:静态语言。
- 常量:通常用全部大写的变量名表示常量
2.字符串与字符编码
1)编码
Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。
UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间
- 最新的Python 3版本中,字符串是以Unicode编码的,Python的字符串支持多语言;
ord()
函数获取字符的整数表示,chr()
函数把编码转换为对应的字符;- Python的字符串类型是
str
,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str
变为以字节为单位的bytes
。
Python对bytes
类型的数据用带b
前缀的单引号或双引号表示;
注意区分'ABC'
和b'ABC'
,前者是str
,后者虽然内容显示得和前者一样,但bytes
的每个字符都只占用一个字节。
ABC'.encode('ascii')
b'ABC'.decode('ascii')
'中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
- 要计算
str
包含多少个字符,可以用len()
函数;len()
函数计算的是str
的字符数,如果换成bytes
,len()
函数就计算字节数:1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。
- 当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3 # -*- coding: utf-8 -*-
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释,赋予权限;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
2)格式化
- Python中,采用的格式化方式和C语言是一致的,用
%
实现,如果你不太确定应该用什么,%s
永远起作用,它会把任何数据类型转换为字符串:
'Hello, %s' % 'world'
'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Age: %s. Gender: %s' % (25, True)
//'Age: 25. Gender: True'
- format()格式化:用传入的参数依次替换字符串内的占位符
{0}
、{1}
、{0:.2f}……
r = (85.0-72.0)/72.0*100
print('scores:%.2f%%' % r)
print('scores:{0:.2f}%'.format(r))