注:Python中区分大小写,对缩进非常敏感。
数据类型和变量
- 整数(十六进制用0x前缀和0-9,a-f表示 注:Python的整数没有大小限制)
- 浮点数(也称为小数,计算可能会有误差 注:Python的浮点数也没有大小限制,但是超出一定范围直接表示为inf(无限大))
- 字符串(以''或""括起来的任意文本,""中可以显示'符号,转义字符\转义\n,\t,允许用'''...'''的格式表示多行内容如:
>>> print('''line1
... line2
... line3''')
line1
line2
line3
注:...是提示符,不是代码
>>> print(r'''Hello\t
... world!''')
Hello\t
world!
r''表示''中字符串默认不转义) - 布尔值 True False(可以通过布尔计算,and,or,not计算,用于条件判断中)
- 空值 是python中一个特殊的值
- 变量 可以由字母,数字,_组合而成,不能用数字开头。注:动态语言 VS 静态语言(变量本身类型是否固定,静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,则报错。python是动态语言,java,c,c++等是静态语言)
- 常量(在Python中,通常用全部大些的变量名表示常量,如PI)
- 特殊运算(/:结果为浮点数 //:只取结果的整数部分 %: 取余)
字符和编码
ASCII编码 | 通常是1个字节,包括大小写英文、数字和一些符号。大些字母A的编码是65,a的编码是97,z的编码是122。 |
其他 | 中国的GB2312编码,日本的Shift_JIS编码,韩国的Euc-kr编码......结果在多种语言混合的文本中,会显示乱码。 |
Unicode 编码 | 将所有语言统一到一套编码里,通常是2个字节。 |
UTF-8编码 | 将Unicode编码转化成“可变长编码”的UTF-8编码。常用的英文字母被编码成1个字节,汉字通常是3个字节,生僻字会编码成4-6个字节。 |
字符 | ASCII | Unicode | UTF-8 |
---|---|---|---|
A | 01000001 | 00000000 01000001 | 01000001 |
中 | x | 01001110 00101101 | 11100100 10111000 10101101 |
注:来源https://www.liaoxuefeng.com
现在计算机系统通用的字符编码工作方式:
在计算机内存中,统一使用Unicode编码,保存到硬盘或者需要传输时转换为UTF-8编码。
Python的字符串语言支持多语言。
对于单个字符的编码,ord()函数获取字符的整数表示,chr()函数将编码转换为对应的字符:
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> '\u4e2d\u6587'
'中文'
Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。Python对bytes类型的数据用带b前缀的单引号或双引号表示:
>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
要计算str包含多少个字符,可以用len()函数;计算bytes的字节数,也用len()函数。
格式化
占位符 | 替换内容 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
>>> 'Hello,%s'%'world'
'Hello,world'
>>> 'Hi,%s,you have $%d.' % ('Michael',10000)
'Hi,Michael,you have $10000.'
>>> print('%2d-%02d' % (3,1))
3-01
>>> print('%.2f' % 3.1415926)
3.14
>>> 'Age: %s. Gender: %s' % (25,True)
'Age: 25. Gender: True'
另一种格式化字符串的方法是使用字符串的format()方法
>>> print('We are the {} who say "{}!"'.format('knights', 'Ni'))
We are the knights who say "Ni!"
>>> print('{0} and {1}'.format('spam', 'eggs'))
spam and eggs
>>> print('{1} and {0}'.format('spam', 'eggs'))
eggs and spam
在str.format()调用时使用关键字参数,可以通过参数名来引用值:
>>> print('This {food} is {adjective}'.format(food='spam',adjective='horrible'))
This spam is horrible
位置和参数可以任意组合:
>>> print('The story of {0},{1} and {2}.'.format('Bill','Rose','Jack'))
The story of Bill,Rose and Jack.
str中允许可选的 : 和格式指令如下:{0:.3f}表示{0}位置的数字保留小数点后3位。
>>> print('The value of PI is approximately {0:.3f}.'.format(math.pi))
The value of PI is approximately 3.142.
>>> print('The value of PI is approximately {:.3f}.'.format(math.pi))
The value of PI is approximately 3.142.
在字段后的 ':' 后面加一个整数会限定该字段的最小宽度,可以用于美化表格:
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678} >>> for name, phone in table.items(): ... print('{0:10} ==> {1:10d}'.format(name, phone)) ... Jack ==> 4098 Dcab ==> 7678 Sjoerd ==> 4127
注:print('{0:10} ==> {1:10d}'.format(name, phone))此行要缩进,否则报 IndentationError: expected an indented block