目录
一,类型
type() 函数用于返回一个对象的类型,返回的是对象的类型信息
isinstance()函数用于检查一个对象时候是指定类型或其子类的实列
二,匿名函数
lambda是一个匿名函数 在冒号前面的x表示函数参数,匿名函数有个限制,就是只能用一个表达式,不用写return,返回值就是改表达式的结果
三,With open
class ManagedFile:
def __init__(self,name):
self.name = name
print(self.name)
def __enten__(self):
self.file = open(self.name.'w')
print('self.file=',self.file)
return self.file
def __exit__(self,exc_typer,exc_valexc_tb):
if self.file:
self.file.close()
with ManagedFile('hello.txt') as f:
f.write('hello, world!')
f.write('bye now')
这是一个python上下文的原生代码,enter() 方法在语句体执行之前进入运行时上下文,exit() 在语句体执行完后从运行时上下文退出,使用这种方法,可以更方便管理代码,例如开启上下文,还需要手动关闭挺麻烦,使用这种方法就可以自动关闭
四,异常:
1.ValueError(数值错误): 当一个函数接收到一个不合适的参数或参数值时,会引发ValueError异常.
例如,尝试将一个字符串转换为整数时,如果字符串无法解析为整数,就会引发ValueError。
2.TypeError (类型错误): 当操作或函数应用于不兼容的类型时,会引发TypeError异常。例如,:尝试对字符串进行数值运算,或将一个不可迭代的对象传递给一个期望可迭代对象的函数,都会引发ypeError.
3.IndexError (索引错误): 当使用无效的索引访问序列(如列表、字符串等)中的元素时,会引发IndexError异常。例如,尝试访问一个超出席列范围的索引或负数索引,都会引发IndexError。
4.KeyError(键错误): 当使用一个字典中不存在的键访问字典元素时,会引发KeyError异常.
5.FileNotFoundError (文件未找到错误) : 当尝试打开一个不存在的文件时,会引发FileNotFoundError异常。
6.I0Error (输入/输出错误) : 当发生输入/输出操作失败时,会引发IOError异常。例如,在读取或写入文件时发生错误,就会引发IOError。
7.ZeroDivisionError (除委错误) : 当尝试以委作为除数进行除法运算时,会引发ZeroDivisionError异
五,迭代器
迭代器 是一种用于遍历集合或序列的对象。它具有一个 __iter__()
方法和一个 __next__()
方法。
当我们使用迭代器对集合进行遍历时,它会逐个返回集合中的元素,直到没有更多元素可供返回为止。
# 创建一个列表
my_list = [1, 2, 3, 4, 5]
# 创建迭代器对象
my_iterator = iter(my_list)
# 使用 next() 方法遍历迭代器
print(next(my_iterator)) # 输出: 1
print(next(my_iterator)) # 输出: 2
print(next(my_iterator)) # 输出: 3
print(next(my_iterator)) # 输出: 4
print(next(my_iterator)) # 输出: 5
# 在没有更多元素可供返回时,抛出 StopIteration 异常
# print(next(my_iterator)) # 抛出 StopIteration 异常
六,生成器
生成器 是一种特殊的迭代器,可以通过函数的方式定义。生成器函数使用 yield
语句来产生(yield)一个值,并且可以暂停和恢复函数的执行。
# 定义一个生成器函数,生成斐波那契数列
def fibonacci_generator():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
# 创建生成器对象
fibonacci = fibonacci_generator()
# 使用 next() 方法获取生成器的下一个值
print(next(fibonacci)) # 输出: 0
print(next(fibonacci)) # 输出: 1
print(next(fibonacci)) # 输出: 1
print(next(fibonacci)) # 输出: 2
print(next(fibonacci)) # 输出: 3
# ...
七,元类
元类 是Python中高级的概念,它用于定义类的创建方式和行为。在Python中,类是对象,而元类就是用来创建这些类的元对象。
八,iter()
iter()
是一个内置函数,用于返回一个迭代器对象。迭代器是能够进行迭代的对象,可以使用 next()
函数来逐个访问其元素。
九,__iter__()
是一种特殊的方法,用于定义一个可迭代对象。可迭代对象是指实现了 __iter__()
方法的对象,它可以通过迭代器来逐个访问其元素。
十,next()
next()
是一个内置函数,用于从迭代器中获取下一个元素。迭代器是一种对象,它实现了 __iter__()
和 __next__()
方法,可以逐个返回其元素。
my_list = [1, 2, 3]
my_iterator = iter(my_list)
# 使用 next() 函数逐个访问迭代器的元素
print(next(my_iterator)) # 输出: 1
print(next(my_iterator)) # 输出: 2
print(next(my_iterator)) # 输出: 3
# 迭代到末尾时会引发 StopIteration 异常
try:
print(next(my_iterator))
except StopIteration:
print("迭代器已经到达末尾")
十一,__next__
__next__()
是一种特殊的方法(也称为魔术方法或特殊成员方法),用于定义一个迭代器对象的行为。当我们在一个迭代器对象上调用内置的 next()
函数时,实际上会调用该对象的 __next__()
方法来返回下一个元素。
十二,Yield
def my_generator():
yield 1
yield 2
yield 3
# 创建生成器对象
gen = my_generator()
# 通过迭代生成器获取值
print(next(gen)) # 输出:1
print(next(gen)) # 输出:2
print(next(gen)) # 输出:3
yield
是一个关键字,在 Python 中用于定义生成器函数。生成器函数与普通函数不同,它们使用 yield
语句来产生一个序列的值,而不是一次性返回一个结果。
十三, 三握四挥
三次握手(TCP连接建立):
- 客户端向服务器发送连接请求报文(SYN)。
- 服务器收到请求后,如果同意连接,则回复一个带有确认码(ACK)和同意连接请求的标志位(SYN)的报文。
- 客户端收到服务器的回复后,再发送一个带有确认码(ACK)的报文,表示连接建立成功。
四次挥手(TCP连接终止):
- 客户端向服务器发送连接释放请求报文(FIN)。
- 服务器收到请求后,回复一个确认码(ACK)的报文,表示已收到释放请求。
- 服务器在确认没有数据需要传输后,发送一个带有释放连接的请求报文(FIN)。
- 客户端收到服务器的释放请求后,回复一个确认码(ACK)的报文,表示连接已终止。
十四,python的内置函数
print()
:用于将数据输出到标准输出(通常是控制台)。len()
:返回一个对象(字符串、列表、元组等)的长度或元素个数。input()
:从用户获取输入的函数。type()
:返回对象的类型。int()
:将一个字符串或数字转换为整数。float()
:将一个字符串或数字转换为浮点数。str()
:将对象转换为字符串。list()
:将一个可迭代对象转换为列表。tuple()
:将一个可迭代对象转换为元组。dict()
:创建一个字典对象。range()
:创建一个整数范围的可迭代对象。sum()
:返回可迭代对象中所有元素的总和。max()
:返回可迭代对象中的最大值。min()
:返回可迭代对象中的最小值。abs()
:返回一个数的绝对值。