今日学习总结-----python上下文----python常见的异常

目录

一、python中type和isinstance的区别

二、什么是python上下文

三、python常见的异常

最常见的是IndexError(索引错误),KeyError(键错误),ValueError(值错误)

四、 迭代器详解

五、python的三大器

六、生成器中yield解释

七、tcp三握四挥

 八、简述python元类

九、python内置函数

十、python 列表推导式

十一、python 字典推导式

十二、列表和元组的区别


一、python中type和isinstance的区别

type是用来打印数据类型,isinstance是用来判断数据是否是指定类型

二、什么是python上下文

class ManagedFile:
    def __init__(self, name):
        self.name = name
        print(self.name)
    def __enter__(self):
        self.file = open(self.name, 'w')
        print('self.file=',self.file)
        return self.file
    def __exit__(self, exc_type, exc_val, exc_tb):
        if self.file:
            self.file.close()

with ManagedFile('hello.txt') as f:
    f.write('hello, world!')
    f.write('bye now')

这是一个python上下文的原生代码,enter() 方法在语句体执行之前进入运行时上下文,exit() 在语句体执行完后从运行时上下文退出,使用这种方法,可以更方便管理代码,例如开启上下文,还需要手动关闭挺麻烦,使用这种方法就可以自动关闭

with是语句,open是类,所以类可以自己定义,open也可以更改

三、python常见的异常

最常见的是IndexError(索引错误),KeyError(键错误),ValueError(值错误)

其他常见的异常类:
        

四、 迭代器详解

python一切皆对象,迭代器(iterator)也可以说是迭代器对象。具有__iter__方法的对象调用__iter__会返回一个迭代器对象。从语法上说就是那些同时具有__next____iter__方法的对象。

  • 迭代器调用__next__方法会调用迭代器中的下一个值;
  • 迭代器调用__iter__方法返回迭代器本身;

五、python的三大器

装饰器、迭代器、生成器

六、生成器中yield解释

如果不太好理解yield,可以先把yield当作return的同胞兄弟来看,他们都在函数中使用,并履行着返回某种结果的职责。

return结束函数返回,yield是暂停函数并返回,当下次执行会从上次暂停的地方继续执行

七、tcp三握四挥

TCP(传输控制协议)是一种可靠的传输协议,用于在计算机网络中传输数据。"三握四挥"是指TCP连接的建立和断开过程中的步骤。

三握(Three-way handshake)是建立TCP连接的步骤,包括以下三个阶段:

  1. 第一步(SYN):客户端向服务器发送一个同步序列编号(SYN)标志的数据包,表明客户端希望建立连接。
  2. 第二步(SYN+ACK):服务器接收到客户端的请求后,向客户端发送一个确认序列编号(ACK)和一个同步序列编号(SYN)标志的数据包,表示接受请求并同意建立连接。
  3. 第三步(ACK):客户端接收到服务器的确认后,向服务器发送一个带有确认序列编号(ACK)标志的数据包,表示客户端同意建立连接。

四挥(Four-way handshake)是断开TCP连接的步骤,包括以下四个阶段:

  1. 第一步(FIN):任何一端的应用程序发出一个结束(FIN)标志,表示要关闭连接。
  2. 第二步(ACK):接收到结束标志的一端发送一个确认序列编号(ACK)标志给对方,表示已收到关闭请求。
  3. 第三步(FIN):被动关闭的一端(接收到第一步的FIN)向对方发送一个结束标志,表示同意关闭连接。
  4. 第四步(ACK):主动关闭的一端接收到第三步的结束标志后,向被动关闭的一端发送一个确认序列编号(ACK)标志,表示确认关闭连接。

通过这样的"三握四挥"过程,TCP可以在通信双方建立可靠的连接和安全地关闭连接。

 八、简述python元类

元类(metaclass)是 Python 中的一个特殊概念,用于创建类的类。元类可以控制类的创建、行为和属性。

在 Python 中,一切皆对象,包括类。在定义类时,Python 首先会查找类的元类,然后使用元类来创建这个类。元类可以被看作是类的模板,它定义了类应该具有的属性、方法和行为。

下面是关于元类的一些详解:

  1. 类是对象:在 Python 中,类也是对象,因此它们都是通过元类创建的实例。
  2. type 是默认的元类:如果在创建类时没有指定元类,Python 默认使用 type 作为元类。type 是 Python 中所有类的元类,它负责创建类对象。
  3. 自定义元类:我们可以通过定义自己的元类来控制类的创建过程。自定义元类需要继承于 type 类,并重写一些特殊方法,如 new 和 init 等。通过重写这些方法,我们可以在类创建的过程中动态地修改类的属性、方法等。
  4. 元类的作用:使用元类可以实现一些高级的功能,例如对类的注解、属性、方法进行验证、修改或增强。元类还可以用于自动注册类、实现ORM(对象关系映射)等。
  5. metaclass 属性:在定义类时,可以通过 metaclass 属性来指定元类。例如:class MyClass(metaclass=MyMeta)。
  6. 元类的继承:元类也可以继承自其他元类,形成元类的层次结构。当创建类时,Python 会按照继承关系依次调用所有相关的元类。

需要注意的是,元类的使用相对较高级,一般情况下不太需要自定义元类。大多数情况下,使用默认的 type 元类就能满足需求。因此,如果对元类的详细了解和使用并不是必需的,大部分开发者不需要过多关注元类的细节。

九、python内置函数

Python 提供了许多内置函数,这些函数是在解释器中内置的,可以直接使用而无需导入任何模块。以下是一些常用的 Python 内置函数:

  1. 类型转换函数

    • int():将一个对象转换为整数类型。
    • float():将一个对象转换为浮点数类型。
    • str():将一个对象转换为字符串类型。
    • bool():将一个对象转换为布尔类型。
    • list():将一个可迭代对象转换为列表类型。
    • tuple():将一个可迭代对象转换为元组类型。
    • dict():创建一个字典对象。
  2. 数学函数

    • abs():返回一个数值的绝对值。
    • pow():返回一个数的指定次幂。
    • round():对一个数进行四舍五入。
    • max():返回给定参数的最大值。
    • min():返回给定参数的最小值。
    • sum():返回可迭代对象中所有元素的和。
  3. 迭代函数

    • range():生成一个指定范围的数字序列。
    • len():返回一个对象的长度。
    • enumerate():返回一个可迭代对象的索引和值。
    • zip():将多个可迭代对象打包成一个元组序列。
  4. 输入输出函数

    • print():打印输出到标准输出。
    • input():从标准输入读取用户输入。
  5. 文件操作函数

    • open():打开文件并返回文件对象。
    • read():读取文件内容。
    • write():向文件写入内容。
    • close():关闭文件。
  6. 其他常用函数

    • type():返回一个对象的类型。
    • isinstance():判断一个对象是否属于指定的类型。
    • help():获取函数、模块等对象的帮助文档。

以上仅是一些常用的内置函数,Python 还提供了很多其他有用的内置函数。你可以在 Python 官方文档中查找完整的内置函数列表及其使用方法。

十、python 列表推导式

Python 中的列表推导式(List Comprehension)允许我们使用简洁的语法快速生成列表。它提供了一种在一行代码中创建列表的方法,非常常用和方便。

一般形式为:

[expression for item in iterable if condition]

其中,expression 是对 item 进行操作得到的值,item 是可迭代对象中的每个元素,iterable 是原始的可迭代对象,if condition 是可选的条件表达式。

十一、python 字典推导式

Python 中的字典推导式(Dictionary Comprehension)可以通过一行代码快速创建字典。它提供了一种简洁的语法来生成字典,非常方便和实用。

一般形式为:

{key_expression: value_expression for item in iterable if condition}

其中,key_expression 是对 item 进行操作得到的键值的表达式,value_expression 是对 item 进行操作得到的值的表达式,item 是可迭代对象中的元素,iterable 是原始的可迭代对象,if condition 是可选的条件表达式。

十二、列表和元组的区别

列表(List)和元组(Tuple)是 Python 中两种常用的数据结构,它们有一些相似之处,但也有一些不同之处。

  1. 可变性(Mutability):

    • 列表是可变的(Mutable),也就是说,可以通过索引修改、添加或删除列表中的元素。
    • 元组是不可变的(Immutable),一旦创建了一个元组,就无法修改其中的元素。如果需要修改元组,只能通过创建一个新的元组来实现。
  2. 语法表示:

    • 列表使用方括号 [] 来表示,元素之间使用逗号分隔。
    • 元组使用圆括号 () 来表示,元素之间使用逗号分隔。可以省略圆括号,仅通过逗号分隔元素也会被视为元组。
  3. 迭代性(Iterability):

    • 列表和元组都是可迭代的,可以通过循环遍历其中的元素。
  4. 性能:

    • 由于元组是不可变的,在某些情况下可能比列表更加高效。因为在进行迭代、访问元素或传递给函数时,元组的性能可能比列表更好。
    • 列表由于可变性,可以在原地修改,但这也导致了一些额外的开销。
  5. 使用场景:

    • 如果需要存储的数据可能需要修改,建议使用列表。
    • 如果需要存储的数据是固定的,不需要修改,可以使用元组。例如,表示坐标、日期等不可变的数据。

需要根据具体的应用场景来选择使用列表还是元组。如果需要频繁地对数据进行修改和操作,选择列表;如果需要保护数据的完整性或者对性能要求较高,选择元组。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值