python基础知识学习总结

目录

  • python基础知识学习总结
  • 一、python的特点
  • 二、python的优缺点
  • 三、注释
  • 四、运算符
  • 五、基本数据类型
  • python有哪些基本数据类型
  • 什么是可变对象,什么是不可变对象
  • 六、变量
  • 七、流程控制
  • 条件语句
  • if语句
  • 三元表达式
  • 循环语句
  • for循环
  • while循环
  • break,continue,else,pass
  • 循环语句和条件语句的嵌套
  • 八、异常
  • 常见的异常
  • 异常处理
  • 抛出异常
  • 自定义异常
  • 九、断言

一、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,把该判断对于的语句执行后,就会忽略后边的判断语句,也就是说ifelifelse后的语句块只有一个会被执行,执行了上面的越上面的语句被执行的可能性越大

elifelse不是必须的,有时可以只有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 条件表达式 [, 描述]