Python基础知识-数据类型和变量,字符和编码及格式化

注:Python中区分大小写,对缩进非常敏感。

数据类型和变量     

  1. 整数(十六进制用0x前缀和0-9,a-f表示 注:Python的整数没有大小限制
  2. 浮点数(也称为小数,计算可能会有误差 注:Python的浮点数也没有大小限制,但是超出一定范围直接表示为inf(无限大)
  3. 字符串(以''或""括起来的任意文本,""中可以显示'符号,转义字符\转义\n,\t,允许用'''...'''的格式表示多行内容如:

    >>> print('''line1

    ... line2

    ... line3''')

    line1

    line2

    line3

    注:...是提示符,不是代码

    >>> print(r'''Hello\t

    ... world!''')

    Hello\t

    world!

    r''表示''中字符串默认不转义)
  4. 布尔值 True False(可以通过布尔计算,and,or,not计算,用于条件判断中)
  5. 空值 是python中一个特殊的值
  6. 变量 可以由字母,数字,_组合而成,不能用数字开头。注:动态语言 VS 静态语言(变量本身类型是否固定,静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,则报错。python是动态语言,java,c,c++等是静态语言)
  7. 常量(在Python中,通常用全部大些的变量名表示常量,如PI)
  8. 特殊运算(/:结果为浮点数    //:只取结果的整数部分 %: 取余)

字符和编码

编码
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

猜你喜欢

转载自blog.csdn.net/Threelights/article/details/79513594