Python基础
Python数据类型与数据结构
数字(Numbers)
整数(int)
浮点数(float)
复数(complex)
字符串(String)
布尔型(Boolean)
列表(List)
元组(Tuple)
字典(Dictionary)
集合(set()/frozenset())
空(None)
Numbers
int(整型)
也即整数。
Python3 中可以使用如下代码获取int类型”最大值“
1 | import sys |
输出:
1 | 9223372036854775807 |
在32位机器上,整数的位数为32位,取值范围为-231~(231)-1,即-2147483648~2147483647; 在64位系统上,整数的位数为64位,取值范围为-263~(263)-1,即-9223372036854775808~9223372036854775807;
小整数对象——小整型对象池
在实际编程中,数值比较小的整数,比如1,2,29等,可能会非常频繁的出现。而在python中,所有的对象都存在于系统堆上。如果某个小整数出现的次数非常多,那么Python将会出现大量的malloc/free操作,这样大大降低了运行效率,造成大量的内存碎片,严重影响Python的整体性能。
在Python2.5乃至3.3中,将小整数位于[-5,257)之间的数,缓存在小整型对象池中。
long(长整型)
Python3中统一称为int。
float(浮点数)
即小数。
类似于C语言中的double类型,64位系统中占8个字节,其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
a + bj
j
为虚数单位。
boolean(布尔类型)
True or False
进行逻辑运算。
String(字符串)
即文本。
123
与‘123’
的区别就在,前者为int,后者为String。当然在输出显示中,都是123
,需要区分。
Python的String有2种排列顺序:

使得不知道字符串长度的情况下,可以从后开始取得字符串内部分元素。
以上为不可变类型,即改变数据,会重新分配内存地址:
1 | 1 a = |
List(列表)
个人理解为可改变(插入、删除······)的有序集合。
“定义”为List类型的是:[]
List索引方式与String相同:

1 | 'q', '123', 123] First = [ |
List为可变类型。
Tuple(元组)
与List极其类似,个人理解为不可变(插入、删除······)的有序集合。
Tuple用()
"定义"
Tuple索引方式与String相同
但是Tuple不可改变!
Dictionary(字典)
Dictionary与List也类似,但是不通过偏移来索引,而是通过“key”
Dictionary通过{}
来“定义”
Dictionary中,key和value建立一一对应的关系,就像字典一样
1 | 'name':'QCF','age':20,'sex':'male' } Students = { |
与List比较,Dictionary的特点有:
- 查找和插入的速度极快,不会随着key的增加而变慢;
- 需要占用大量的内存,内存浪费多。
而List相反:
- 查找和插入的时间随着元素的增加而增加;
- 占用空间小,浪费内存很少。
所以,Dictionary是用空间来换取时间的一种方法。
Dictionary可以用在需要高速查找的很多地方,Dictionary的key必须是不可变对象。
set() / frozenset()(集合)
实际上为函数,是一个无序不重复元素集合,有 - 、& 、 | 、 ^ 运算。
1 | 'runobb') # 集合,无顺序,可去掉重复元素 a = set( |
1 | # set 转成 List |
1 | # List 转成 set |
NoneType(空)
特殊类型,只有None。
返回值为False。
与‘0’不同
Python基础语句
if else
1 | if () and (): |
case switch
语句还可以利用字典达成。
for 有限循环
1 | for var in Sequence: |
已知循环次数。
range()
返回值为一生成器。
while 无限循环
当不满足条件时执行代码,满足时跳出循环。
1 | while Boolean Expression: |
未知循环次数时使用。
None返回值为False(0)
continue
:重新执行循环
break
:跳出循环
pass
:空语句(用于占位)
try except 异常处理
1 | try: |
异常名称 | 描述 |
---|---|
BaseException | 所有异常的基类 |
SystemExit | 解释器请求退出 |
KeyboardInterrupt | 用户中断执行(通常是输入^C) |
Exception | 常规错误的基类 |
StopIteration | 迭代器没有更多的值 |
GeneratorExit | 生成器(generator)发生异常来通知退出 |
StandardError | 所有的内建标准异常的基类 |
ArithmeticError | 所有数值计算错误的基类 |
FloatingPointError | 浮点计算错误 |
OverflowError | 数值运算超出最大限制 |
ZeroDivisionError | 除(或取模)零 (所有数据类型) |
AssertionError | 断言语句失败 |
AttributeError | 对象没有这个属性 |
EOFError | 没有内建输入,到达EOF 标记 |
EnvironmentError | 操作系统错误的基类 |
IOError | 输入/输出操作失败 |
OSError | 操作系统错误 |
WindowsError | 系统调用失败 |
ImportError | 导入模块/对象失败 |
LookupError | 无效数据查询的基类 |
IndexError | 序列中没有此索引(index) |
KeyError | 映射中没有这个键 |
MemoryError | 内存溢出错误(对于Python 解释器不是致命的) |
NameError | 未声明/初始化对象 (没有属性) |
UnboundLocalError | 访问未初始化的本地变量 |
ReferenceError | 弱引用(Weak reference)试图访问已经垃圾回收了的对象 |
RuntimeError | 一般的运行时错误 |
NotImplementedError | 尚未实现的方法 |
SyntaxError | Python 语法错误 |
IndentationError | 缩进错误 |
TabError | Tab 和空格混用 |
SystemError | 一般的解释器系统错误 |
TypeError | 对类型无效的操作 |
ValueError | 传入无效的参数 |
UnicodeError | Unicode 相关的错误 |
UnicodeDecodeError | Unicode 解码时的错误 |
UnicodeEncodeError | Unicode 编码时错误 |
UnicodeTranslateError | Unicode 转换时错误 |
Warning | 警告的基类 |
DeprecationWarning | 关于被弃用的特征的警告 |
FutureWarning | 关于构造将来语义会有改变的警告 |
OverflowWarning | 旧的关于自动提升为长整型(long)的警告 |
PendingDeprecationWarning | 关于特性将会被废弃的警告 |
RuntimeWarning | 可疑的运行时行为(runtime behavior)的警告 |
SyntaxWarning | 可疑的语法的警告 |
UserWarning | 用户代码生成的警告 |