python基础知识学习总结
python基础知识学习总结
一、python的特点
1、python是一种面向对象的语言,在python中一切皆对象
2、python是一种解释性的语言
3、python是一种交互式的语言,可以在终端进行命令行编程
4、python是一种跨平台的语言
5、python有强大的,丰富的标准库以及第三方库
6、python用缩进来识别代码块(建议用4个空格)
二、python的优缺点
优点:
1、简单,易学,开源,免费
2、跨平台,可移植性,可扩展性,可读性好
3、拥有丰富的库
缺点:
执行效率比较慢
三、注释
单行注释:#
多行注释:用三引号 '''(""")或者没行都用#注释
三引号注释其实是文档字符串,可以用__doc__查看文档字符串
四、运算符
类型 | 运算符 |
---|---|
算数运算符 | +,-,*,/,//,%,** |
比较(关系)运算符 | ==,!=,>,<,>=,<= |
赋值运算符 | =,+=,-=,*=,/=,%=,//= |
逻辑运算符 | adn,or,not |
位运算符 | &(按位与),|(按位或),^(按位异或),~(按位取反),<<(左移),>>(右移) |
成员运算符 | in,not in |
身份运算符 | is,not is |
五、基本数据类型
python有哪些基本数据类型
不可变类型:
数字:整型(int),浮点型(float),复数型(complex),bool
字符串:str “string”
元祖:tuple (1,"a",2,3)
可变类型:
列表:list [1,2,3,4]
字典:dict {"a":1, "b":2}
集合:set {1,2,3,4}
什么是可变对象,什么是不可变对象
此处的可变是指在内存中的对象是否可以改变,python中对象是保存在内存中的。对于不可变对象,当对对象进行操作时,如果对象的值要发生改变,并不会直接修改对象的内容,而是在内存中重新申请内存地址,创建新的对象,并将原来对象的引用指向新的对象,旧的对象的引用数量减一;对于可变对象,当对对象进行操作时,如果对象的值要发生改变,内存中并不会创建新的对象,而是会直接修改对象的值。
六、变量
-
python中的变量是对内存中的对象的引用,相当于对象的标记或名称。
-
如果一个变量是不可变对象的引用,如果要变量进行操作(改变变量的值),实质上是将变量的引用指向新的对象
-
如果一个变量是可变对象的引用,如果对变量进行操作(例如列表添加新值),实质上改变的是对象的值,并不会改变引用
-
当一个对象的引用数量为0时,这个对象就会被回收
深拷贝和前拷贝
浅拷贝:copy.copy(),浅拷贝时创建了一个和原对象一样的类型,但是其内容时对原对象元素的引用
深拷贝:copy.deepcopy(),在内存中将所有数据重新建立一份。
七、流程控制
条件语句
if语句
#! /usr/bin/python3
# -*- congfig:utf-8 -*-
if 条件表达式(bool值):
语句块
elif 条件表达式(bool值):
语句块
else:
语句块
if语句执行的特点:if语句是从上往下判断的,如果在某个判断上时True,把该判断对于的语句执行后,就会忽略后边的判断语句,也就是说if、elif、else后的语句块只有一个会被执行,执行了上面的越上面的语句被执行的可能性越大
elif和else不是必须的,有时可以只有if.....,有时可以用if...else...
三元表达式
值1 if 条件表达式(bool) else 值2
#如果条件表达式结果为True则返回值1,否则返回值2
循环语句
for循环
#! /usr/bin/python3
# -*- congfig:utf-8 -*-
for 变量名 in 可迭代对象:
语句块(循环体)
#continue
#break
else:
语句块
while循环
#! /usr/bin/python3
# -*- congfig:utf-8 -*-
while 条件表达式(bool值):
语句块
#continue
#break
else:
语句块
break,continue,else,pass
break:跳出循环,直接结束循环
continue:跳出当前循环,进入下一次循环(循环没有结束)
else:循环后的else语句是在循环正常结束后执行的语句,如果循环中途被break语句结束则不会执行else语句
pass:pass语句不会做任何事情,当语法上需要一条语句,但不需要做任何操作的时候可以用pass语句
循环语句和条件语句的嵌套
循环语句和条件语句可以相互嵌套,也可以循环套循环,条件套条件。但不建议嵌套太多层,使用嵌套时要注意各层级的缩进
八、异常
代码没有语法错误,但当执行程序的时候,遇到程序中有错误,程序就会停止运行并抛出一些错误信息,这就是异常
常见的异常
异常 | 描述 |
---|---|
ImportError | 无法引入模块或包,大部分是路径问题或名称错误 |
IOError | 输入输出异常,大部分是无法打开文件 |
TypeError | 传入对象类型与要求的不符合 |
NameError | 使用一个还未被赋予对象的变量 |
ValueError | 传入一个调用者不期望的值,即使值的类型是正确的 |
KeyError | 尝试访问字典里不存在的键 |
SystemError | 一般的解释器系统错误 |
KeyboardInterrupt | 用户中断执行 |
ZeroDivisionError | 除(或取模)零 |
异常处理
python使用try....except...语句来捕获异常,并做异常处理
try:
# 这里写尝试执行的代码
pass
except 错误类型1:
# 这里写针对错误类型1,对应的代码处理
pass
except 错误类型2:
# 这里写针对错误类型2,对应的代码处理
pass
except (错误类型3,错误类型4):
# 这里写针对错误类型3 和 4,对应的代码处理
pass
except Exception as result:
# 这里写针对所有未知错误类型,对应的代码处理
pass
else:
# 执行完try代码块后,再执行这里的代码(没有异常时,执行)
pass
finally:
# 这里写无论是否有异常,最终都会执行的代码
-
首先,执行 try 子句(在关键字 try 和关键字 except 之间的语句)
-
如果没有异常发生,忽略 except 子句,try 子句执行后,执行else子句,最后执行finally子句
-
如果在执行 try 子句的过程中发生了异常,那么 try 子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的 except 子句将被执行,如过异常类型没有和except之后的名称相符则执行Exception的except子句(Exception可以捕捉所有异常),except子句执行后会执行finally子句
-
else子句和finally子句不是必须的
-
except语句可以是一个,也可以时多个
抛出异常
raise 异常(异常描述)
自定义异常
通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类或者其它异常类
九、断言
assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发AssertionError异常
assert 条件表达式 [, 描述]