python
数据类型
基本类型
- 空值:
None
- python的整数没有大小限制,比如Java的是有大小限制的,对32位整数的范围限制在-2147483648-2147483647
- Python的浮点数也没有大小限制,但是超出一定范围就直接表示为
inf
(无限大)
除法: "//",只保留整数,比如 10 // 3 = 3 余数: "%",比如 10 % 3 = 1
list和tuple
list
:类似于JS的数组,可变长度和内容,数组内容可以多种tuple
:一旦初始化就不能修改,因为tuple不可变,所以代码更安全
tuple所谓的"不变"是说,tuple的每个元素,指向永远不变,如果tuple指向的是对象,那么对象自己的内容可以变化,但是tuple指向是不可变的
编码
ASCII+Unicode+UTF-8的关系
- 由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码
- 全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码,因此发明了
Unicode字符集
- 新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算,因此出现了“可变长编码”的
UTF-8编码
UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节
总结
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码
用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件
浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器;所以你看到很多网页的源码上会有类似的信息,表示该网页正是用的UTF-8编码
python编码问题
- 在最新的Python3版本中,字符串是以Unicode编码的 => Python的字符串支持多语言
ord()
函数获取字符的整数表示:ord('A')=65
chr()
函数把编码转换为对应的字符:chr(66)=B
- Python对bytes类型的数据用带b前缀的单引号或双引号表示:
x = b'ABC'
,要注意区分'ABC'和b'ABC',前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节 '中文'.encode('ascii')
:含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错- 当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行
python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
当str和bytes互相转换时,需要指定编码。最常用的编码是
UTF-8
!!!!!尽量不要用其他编码,造成混乱
条件判断
- 缩进代表着
{}
,需要加上冒号:
:
python
age = 3
if age >= 18:
print('your age is', age)
print('adult')
else:
print('your age is', age)
print('teenager')
match
类似于switch
python
score = 'B'
if score == 'A':
print('score is A.')
elif score == 'B':
print('score is B.')
elif score == 'C':
print('score is C.')
else:
print('invalid score.')
可以改为:
python
score = 'B'
match score:
case 'A':
print('score is A.')
case 'B':
print('score is B.')
case 'C':
print('score is C.')
case _: # _表示匹配到其他任何情况
print('score is ???.')