python概念梳理(很全面)

通过学习了相关的资料,把一些比较经典的知识点总结梳理一下

Python的几个基本概念

基础级:
1.表达式
表达式就是一个类似于数学公式的东西
比如:10 + 5   8 - 4
表达式一般仅仅用了计算一些结果,不会对程序产生实质性的影响
如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出

2.语句
在程序中语句一般需要完成某种功能,比如打印信息、获取信息、为变量赋值
比如:
print()
input()
a = 10
语句的执行一般会对程序产生一定的影响
在交互模式中不一定会输出语句的执行结果

3.程序(program)
程序就是由一条一条的语句和一条一条的表达式构成的。

4.函数(function)
函数就是一种语句,函数专门用来完成特定的功能
函数长的形如:xxx()
函数的分类:

1). 内置函数
     由Python解释器提供的函数,可以在Python中直接使用
2). 自定义函数
     由程序员自主的创建的函数
     当我们需要完成某个功能时,就可以去调用内置函数,或者自定义函数

函数的两个要素:

1). 参数
     ()中的内容就是函数的参数
     函数中可以没有参数,也可以有多个参数,多个参数之间使用,隔开
2). 返回值
     返回值是函数的返回结果,不是所有的函数都有返回值

Python的基本语法
在Python中严格区分大小写
Python中的每一行就是一条语句,每条语句以换行结束
Python中每一行语句不要过长(规范中建议每行不要超过80个字符)
一条语句可以分多行编写,多行编写时语句后边以结尾
Python是缩进严格的语言,所以在Python中不要随便写缩进
在Python中使用#来表示注释,#后的内容都属于注释,注释的内容将会被解释器所忽略
我们可以通过注释来对程序进行解释说明,一定要养成良好的编写注释的习惯
注释要求简单明了,一般习惯上#后边会跟着一个空格

字面量和变量
字面量就是一个一个的值,比如:1,2,3,4,5,6,‘HELLO’
字面量所表示的意思就是它的字面的值,在程序中可以直接使用字面量

变量(variable)变量可以用来保存字面量,并且变量中保存的字面量是不定的
变量本身没有任何意思,它会根据不同的字面量表示不同的意思

一般我们在开发时,很少直接使用字面量,都是将字面量保存到变量中,通过变量来引用字面量

数据类型  
数据类型指的就是变量的值得类型,也就是可以为变量赋哪些值
在Python中,能够直接处理的数据类型有以下几种:整数、浮点数、字符串、布尔值、列表、元组、字典、集合。
以后我们详细介绍这几个数据类型。

对象(object)

Python是一门面向对象的语言
一切皆对象!
程序运行当中,所有的数据都是存储到内存当中然后再运行的!
对象就是内存中专门用来存储指定数据的一块区域
对象实际上就是一个容器,专门用来存储数据
像我们之前学习的数值、字符串、布尔值、None都是对象

对象的结构
每个对象中都要保存三种数据
1). id(标识)
id用来标识对象的唯一性,每一个对象都有唯一的id
对象的id就相当于人的身份证号一样
可以通过id()函数来查看对象的id
id是由解析器生成的,在CPython中,id就是对象的内存地址
对象一旦创建,则它的id永远不能再改变

2). type(类型)
类型用来标识当前对象所属的类型
比如:int str float bool
类型决定了对象有哪些功能
通过type()函数来查看对象的类型
Python是一门强类型的语言,对象一旦创建类型便不能修改

3). value(值)
值就是对象中存储的具体的数据
对于有些对象值是可以改变的
对象分成两大类,可变对象 不可变对象
可变对象的值可以改变
不可变对象的值不能改变

变量和对象
对象并没有直接存储到变量中,在Python中变量更像是给对象起了一个别名
变量中存储的不是对象的值,而是对象的id(内存地址),
当我们使用变量时,实际上就是在通过对象id在查找对象
变量中保存的对象,只有在为变量重新赋值时才会改变
变量和变量之间是相互独立的,修改一个变量不会影响另一个变量

类型转换
所谓的类型转换,将一个类型的对象转换为其他对象
类型转换不是改变对象本身的类型,而是根据当前对象的值创建一个新对象

运算符(操作符)
运算符可以对一个值或多个值进行运算或各种操作
比如 + 、-、= 都属于运算符
运算符的分类:
1.算术运算符
2.赋值运算符
3.比较运算符(关系运算符)
4.逻辑运算符
5.条件运算符(三元运算符)

中级:
1、列表(list)
    - 列表是Python中的一个对象
    - 对象(object)就是内存中专门用来存储数据的一块区域
    - 之前我们学习的对象,像数值,它只能保存一个单一的数据
    - 列表中可以保存多个有序的数据
    - 列表是用来存储对象的对象
    - 列表的使用:
        1.列表的创建
        2.操作列表中的数据

 - 思考练习:
    - 创建一个列表,在列表中保存你最好的5个朋友的名字
    然后分别通过索引来获取每一个朋友的名字

2、序列(sequence)
    - 序列是Python中最基本的一种数据结构
    - 数据结构指计算机中数据存储的方式
    - 序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)
        并且序列中的数据会按照添加的顺序来分配索引
    - 序列的分类:
        可变序列(序列中的元素可以改变):
            > 列表(list)
        不可变序列(序列中的元素不能改变):
            > 字符串(str)    
            > 元组(tuple)
        - 刚刚我们所讲所有操作都是序列的通用操作01 02 03 三个文件中的操作
思考练习:
 
EMS(Employee Manager System 员工管理系统) 
    - 做命令行版本的员工管理系统
    - 功能:
        四个:
            1.查询
                - 显示当前系统当中的所有员工
            2.添加
                - 将员工添加到当前系统中
            3.删除
                - 将员工从系统当中删除
            4.退出
                - 退出系统
    - 员工信息要保存到哪里? 列表,在系统中应该有一个列表,专门用来保存所有员工信息的

 可变对象
    - 每个对象中都保存了三个数据:
        id(标识)
        type(类型)
        value(值)    

    - 列表就是一个可变对象
        a = [1,2,3]

    - a[0] = 10 (改对象)
        - 这个操作是在通过变量去修改对象的值
        - 这种操作不会改变变量所指向的对象    
        - 当我们去修改对象时,如果有其他变量也指向了该对象,则修改也会在其他的变量中体现

    - a = [4,5,6] (改变量)
        - 这个操作是在给变量重新赋值
        - 这种操作会改变变量所指向的对象
        - 为一个变量重新赋值时,不会影响其他的变量

    - 一般只有在为变量赋值时才是修改变量,其余的都是修改对象

3、 字典(dict)
    - 字典属于一种新的数据结构,称为映射(mapping)
    - 字典的作用和列表类似,都是用来存储对象的容器
    - 列表存储数据的性能很好,但是查询数据的性能的很差
    - 在字典中每一个元素都有一个唯一的名字,通过这个唯一的名字可以快速的查找到指定的元素
    - 在查询元素时,字典的效率是非常快的
    - 在字典中可以保存多个对象,每个对象都会有一个唯一的名字
        这个唯一的名字,我们称其为键(key),通过key可以快速的查询value
        这个对象,我们称其为值(value)
        所以字典,我们也称为叫做键值对(key-value)结构
        每个字典中都可以有多个键值对,而每一个键值对我们称其为一项(item)

 4、集合(set)
    - 集合和列表非常相似
    - 不同点:
        1.集合中只能存储不可变对象
        2.集合中存储的对象是无序(不是按照元素的插入顺序保存)
        3.集合中不能出现重复的元素

高级:
1、函数简介(function)
    - 函数也是一个对象
    - 对象是内存中专门用来存储数据的一块区域
    - 函数可以用来保存一些可执行的代码,并且可以在需要时,对这些语句进行多次的调用
    - 创建函数:
        def 函数名([形参1,形参2,...形参n]) :
            代码块
        - 函数名必须要符号标识符的规范
            (可以包含字母、数字、下划线、但是不能以数字开头)    
    - 函数中保存的代码不会立即执行,需要调用函数代码才会执行
    - 调用函数:
        函数对象()
    - 定义函数一般都是要实现某种功能的    

2、 函数的参数
    - 在定义函数时,可以在函数名后的()中定义数量不等的形参,
        多个形参之间使用,隔开
    - 形参(形式参数),定义形参就相当于在函数内部声明了变量,但是并不赋值
    - 实参(实际参数)
        - 如果函数定义时,指定了形参,那么在调用函数时也必须传递实参,
            实参将会赋值给对应的形参,简单来说,有几个形参就得传几个实参

    - 练习1:
        定义一个函数,可以用来求任意三个数的乘积

    - 练习2:
        定义一个函数,可以根据不同的用户名显示不同的欢迎信息    

3、函数式编程
    - 在Python中,函数是一等对象
    - 一等对象一般都会具有如下特点:
        ① 对象是在运行时创建的
        ② 能赋值给变量或作为数据结构中的元素
        ③ 能作为参数传递
        ④ 能作为返回值返回

    - 高阶函数
        - 高阶函数至少要符合以下两个特点中的一个
          ① 接收一个或多个函数作为参数
          ② 将函数作为返回值返回
4、什么是对象?
    - 对象是内存中专门用来存储数据的一块区域。
    - 对象中可以存放各种数据(比如:数字、布尔值、代码)
    - 对象由三部分组成:
        1.对象的标识(id)
        2.对象的类型(type)
        3.对象的值(value)

5、 面向对象(oop)
    - Python是一门面向对象的编程语言
    - 所谓的面向对象的语言,简单理解就是语言中的所有操作都是通过对象来进行的
    - 面向过程的编程的语言
        - 面向过程指将我们的程序的逻辑分解为一个一个的步骤,
            通过对每个步骤的抽象,来完成程序
        - 例子:
            - 孩子上学
                1.妈妈起床
                2.妈妈上厕所
                3.妈妈洗漱
                4.妈妈做早饭
                5.妈妈叫孩子起床
                6.孩子上厕所
                7.孩子要洗漱
                8.孩子吃饭
                9.孩子背着书包上学校

        - 面向过程的编程思想将一个功能分解为一个一个小的步骤,
            我们通过完成一个一个的小的步骤来完成一个程序
        - 这种编程方式,符合我们人类的思维,编写起来相对比较简单
        - 但是这种方式编写代码的往往只适用于一个功能,
            如果要在实现别的功能,即使功能相差极小,也往往要重新编写代码,
            所以它可复用性比较低,并且难于维护

    - 面向对象的编程语言
        - 面向对象的编程语言,关注的是对象,而不关注过程
        - 对于面向对象的语言来说,一切都是对象       
        - 例子:
            1.孩他妈起床叫孩子上学

        - 面向对象的编程思想,将所有的功能统一保存到对应的对象中
            比如,妈妈功能保存到妈妈的对象中,孩子的功能保存到孩子对象中
            要使用某个功能,直接找到对应的对象即可
        - 这种方式编写的代码,比较容易阅读,并且比较易于维护,容易复用。
        - 但是这种方式编写,不太符合常规的思维,编写起来稍微麻烦一点

    - 简单归纳一下,面向对象的思想
        1.找对象
        2.搞对象

 6、类(class)
    - 我们目前所学习的对象都是Python内置的对象
    - 但是内置对象并不能满足所有的需求,所以我们在开发中经常需要自定义一些对象
    - 类,简单理解它就相当于一个图纸。在程序中我们需要根据类来创建对象
    - 类就是对象的图纸!
    - 我们也称对象是类的实例(instance)
    - 如果多个对象是通过一个类创建的,我们称这些对象是一类对象
    - 像 int() float() bool() str() list() dict() .... 这些都是类
    - a = int(10) # 创建一个int类的实例 等价于 a = 10
    - 我们自定义的类都需要使用大写字母开头,使用大驼峰命名法(帕斯卡命名法)来对类命名

    - 类也是一个对象!
    - 类就是一个用来创建对象的对象!
    - 类是type类型的对象,定义类实际上就是定义了一个type类型的对象

 7、使用类创建对象的流程
    1.创建一个变量
    2.在内存中创建一个新对象
    3.将对象的id赋值给变量

8、类的定义(参考图2)
    - 类和对象都是对现实生活中的事物或程序中的内容的抽象
    - 实际上所有的事物都由两部分构成:
        1.数据(属性)
        2.行为(方法)

    - 在类的代码块中,我们可以定义变量和函数,
        变量会成为该类实例的公共属性,所有的该类实例都可以通过 对象.属性名 的形式访问
        函数会成为该类实例的公共方法,所有该类实例都可以通过 对象.方法名() 的形式调用方法

    - 注意:
        方法调用时,第一个参数由解析器自动传递,所以定义方法时,至少要定义一个形参!

    - 实例为什么能访问到类中的属性和方法
        类中定义的属性和方法都是公共的,任何该类实例都可以访问

        - 属性和方法查找的流程
            当我们调用一个对象的属性时,解析器会先在当前对象中寻找是否含有该属性,
                如果有,则直接返回当前的对象的属性值,
                如果没有,则去当前对象的类对象中去寻找,如果有则返回类对象的属性值,
                如果类对象中依然没有,则报错!

        - 类对象和实例对象中都可以保存属性(方法)
            - 如果这个属性(方法)是所有的实例共享的,则应该将其保存到类对象中
            - 如果这个属性(方法)是某个实例独有,则应该保存到实例对象中     

        - 一般情况下,属性保存到实例对象中
            而方法需要保存到类对象中    


9、创建对象的流程
    p1 = Person()的运行流程
        1.创建一个变量
        2.在内存中创建一个新对象
        3.__init__(self)方法执行
        4.将对象的id赋值给变量

10、类的基本结构   
    class 类名([父类]) :

        公共的属性...

        # 对象的初始化方法
        def __init__(self,...):
            ...

        # 其他的方法    
        def method_1(self,...):
            ...

        def method_2(self,...):
            ...

        ...    

    - 练习:
        尝试自定义一个表示狗的类(Dog)      
            属性:
                name
                age
                gender
                height
                ...
            方法:  
                jiao()
                yao()
                run()
                ...
 
异常相关的问题:
1、异常
    程序在运行过程当中,不可避免的会出现一些错误,比如:
        使用了没有赋值过的变量
        使用了不存在的索引
        除0
        ...
    这些错误在程序中,我们称其为异常。
    程序运行过程中,一旦出现异常将会导致程序立即终止,异常以后的代码全部都不会执行!    

2、处理异常
    程序运行时出现异常,目的并不是让我们的程序直接终止!
    Python是希望在出现异常时,我们可以编写代码来对异常进行处理!    

    try语句
        try:
            代码块(可能出现错误的语句)
        except 异常类型 as 异常名:
            代码块(出现错误以后的处理方式)
        except 异常类型 as 异常名:
            代码块(出现错误以后的处理方式)
        except 异常类型 as 异常名:
            代码块(出现错误以后的处理方式)
        else:
            代码块(没出错时要执行的语句)    
        finally:
            代码块(该代码块总会执行)    

        try是必须的 else语句有没有都行
        except和finally至少有一个    

    可以将可能出错的代码放入到try语句,这样如果代码没有错误,则会正常执行,
        如果出现错误,则会执行expect子句中的代码,这样我们就可以通过代码来处理异常
        避免因为一个异常导致整个程序的终止            

3、异常的传播(抛出异常)
    当在函数中出现异常时,如果在函数中对异常进行了处理,则异常不会再继续传播,
        如果函数中没有对异常进行处理,则异常会继续向函数调用处传播,
        如果函数调用处处理了异常,则不再传播,如果没有处理则继续向调用处传播
        直到传递到全局作用域(主模块)如果依然没有处理,则程序终止,并且显示异常信息

    当程序运行过程中出现异常以后,所有的异常信息会被保存一个专门的异常对象中,
        而异常传播时,实际上就是异常对象抛给了调用处
        比如 : ZeroDivisionError类的对象专门用来表示除0的异常
                NameError类的对象专门用来处理变量错误的异常
                ....

    在Python为我们提供了多个异常对象            

 4、抛出异常
    - 可以使用 raise 语句来抛出异常,
        raise语句后需要跟一个异常类 或 异常的实例

 5、文件(File)
    - 通过Python程序来对计算机中的各种文件进行增删改查的操作
    - I/O(Input / Output)
    - 操作文件的步骤:
        ① 打开文件
        ② 对文件进行各种操作(读、写),然后保存
        ③ 关闭文件

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值