目录
2.json模块中的dumps、loads、dump、load这四个函数的用法示
3.def route(self, rule: str, **options: t.Any) -> t.CallablellT route], T route]:解析
4.在Python中,有两种类型的不定长参数:*args和**kwargs。
1.常见的状态码
(1).信息性状态码(Informational Status Codes):100 Continue(继续)
101 Switching Protocols(切换协议)
102 Processing(处理中)
2.成功状态码(Successful Status Codes):
200 OK(成功)
201 Created(已创建)
202 Accepted(已接受)
204 No Content(无内容)
206 Partial Content(部分内容)
(2)重定向状态码(Redirection Status Codes):
300 Multiple Choices(多种选择)
301 Moved Permanently(永久移动)
302 Found(临时移动)
304 Not Modified(未修改)
307 Temporary Redirect(临时重定向)
308 Permanent Redirect(永久重定向)
(3).客户端错误状态码(Client Error Status Codes):
400 Bad Request(错误请求)
401 Unauthorized(未经授权)
403 Forbidden(禁止)
404 Not Found(未找到)
405 Method Not Allowed(方法不允许)
406 Not Acceptable(不可接受)
408 Request Timeout(请求超时)
410 Gone(已经消失)
413 Payload Too Large(载荷过大)
429 Too Many Requests(请求过多)
451 Unavailable For Legal Reasons(因法律原因不可用)
(4). 服务器错误状态码(Server Error Status Codes):
500 Internal Server Error(服务器内部错误)
501 Not Implemented(尚未实施)
502 Bad Gateway(错误的网关)
503 Service Unavailable(服务不可用)
504 Gateway Timeout(网关超时)
507 Insufficient Storage(存储空间不足)
2.json
模块中的dumps
、loads
、dump
、load
这四个函数的用法示
1.dumps
: 将Python对象转换为JSON格式的字符串。
import json
data = {'name': 'Jojn', 'age': 30}
json_str = json.dumps(data)
print(json_str)
2.loads
: 将JSON格式的字符串转换为Python对象。
import json
json_str = '{"name": "John", "age": 30}'
data = json.loads(json_str)
print(data)
3.dump
: 将Python对象转换为JSON格式,并将其写入文件中
import json
data = {'name': 'John', 'age': 30}
with open('data.json', 'w') as file:
json.dump(data, file)
4.load
: 从文件中读取JSON格式的数据,并将其转换为Python对象。
import json
with open('data.json', 'r') as file:
data = json.load(file)
print(data)
3.def route(self, rule: str, **options: t.Any) -> t.CallablellT route], T route]:解析
1.def route(self, rule: str, **options: t,Any) -> t.CallablelT routel, T routel:
def route(self,rule: str, **options: t,Any) :定义了一个名为 route 的函数,接受 self (表示类的实例)作为第一个参数,而后是一个规则字符串 ule 和一个可变关键字参数 options 。其中 rule 被注解为字符串类型, options 的类型是不确定的(使用了 t.Any 进行模糊注解)。
->t.callablel[T routel, route] :表示该函数返回一个可调用对象 (Callable),这个可调用对象接受一个类型为 T route 的参数,并返回一个类型为 route 的值。 route 是一个泛型类型变量,表示这两个位置上的参数和返回值具有相同的类型。
2.:t.CallablelrT routel, T route] :
这是一个类型提示,表示函数的返回值类型。t.callablerrT route],T route] 是一个泛型类型,表示返回值是一个可调用对象,该可调用对象接受一个类型为 T route 的参数,并返回一个类型为 route 的值。这样的类型提示使得函数的返回值具有指定的类型约束。
总之,这个函数定义了一个名为 route 的方法,接受一个规则字符串和可选的关键字参数,返回一个可调用对象,该对象接受一个类型为 T route 的参数,并返回一个类型为 Troute 的值。
4.在Python中,有两种类型的不定长参数:*args和**kwargs。
-
*args
:*args
是用于传递可变数量的非关键字参数的参数名。它允许将任意数量的参数作为元组传递给函数。在函数内部,可以通过遍历这个元组来访问和处理每个传递的参数。
以下是使用*args
的示例:
def my_function(*args):
for arg in args:
print(arg)
my_function('Hello', 123, [1, 2, 3])
输出:
Hello
123
[1, 2, 3]
在上述示例中,my_function函数可以接受任意数量的参数,并通过*args将它们作为元组进行处理。
**kwargs:
**kwargs是用于传递可变数量的关键字参数的参数名。它允许将任意数量的关键字参数作为字典传递给函数。在函数内部,可以通过字典的键值对来访问和处理每个传递的参数。
以下是使用**kwargs的示例:
def my_function(**kwargs):
for key, value in kwargs.items():
print(key + ' = ' + str(value))
my_function(name='John', age=30, city='New York')
输出:
name = John
age = 30
city = New York
5.python中的泛型
在Python中,从版本3.5开始,引入了对泛型的支持。泛型允许在定义函数、类和集合时指定变量的类型,从而提供强类型检查和类型提示。以下是Python中泛型的常见用法:
1.泛型函数:可以使用泛型类型注解来指定函数参数和返回值的类型。例如:
from typing import List
def reverse list(lst: Listlint]) -> Listint]:return lst[::-1]
在函数 reverse list 中,使用了 List[int] 作为参数和返回值的类型注解,表明参数和返回值的类型是整数列表
6.Python中常见的可调用参数类型:
1.位置参数(Positional Arguments): 位置参数是根据参数的位置进行传递的。调用时,按照定义函数或方法时参数的顺序进行传递。
示例:
def my_function(arg1, arg2):
print(arg1, arg2)
my_function("Hello","world") # 位置参数传递
2.关键字参数(Keyword Arguments): 关键字参数是根据参数的名称进行传递的。调用时,使用参数名称和值的形式进行传递
示例:
def my_function(arg1, arg2):
print(arg1, arg2)
my_function(arg2="world",arg1="Hello") # 关键宁参数传递
3.默认参数(Default Arguments): 默认参数是在定义函数或方法时为参数指定的默认值,如果调用时未传递相应参数的值,则使用默认值
示例:
def greet(name,message="Hello"):
print(message,name)
greet("Alice") # 使用默认参数
greet("Bob","Hi") # 传递自定义参数值
4 .可变长位置参数(Varable-length Postona Arguments) : 可变长置参数允许传递意数量的位置参数,使用星号 将参数收集到一个元组中,在数内部可以对其进行通历或操
作
示例:
def my_function(*args):
for arg in args:
print(arg)
my_function("Hello","world","!") # 可交长位置参数
5.可变长关键字参数 Varable-lenth keword Arouments) : 可变长关键字参数允许传递意教量的关键字参数,使用两个星号 # 将参教收集到一个字典中,在医教内部可以对其进行遍历或操作。
示例:
def my function(**kwargs):
for key, value in kwargs.items():
print(key,value)
my_function(name="Alice",age=25) # 可交长关键宁参数
7.python中可调用对象和不可调用对象
可调用对象(Callable Objects)是指可以像函数一样进行调用的对象。在Python中,以下类型的对象都是可调用对象:
函数(Function):包括内置函数和自定义函数。
类(Class):通过调用类来创建对象时,默认会调用类的构造方法(__init__)。
方法(Method):在类中定义的函数,可以通过类实例来调用。
类的实例(Instance):如果类定义了__call__方法,实例就可以被调用。
不可调用对象(Non-callable Objects)是指不具备调用能力的对象。通常它们是表示数据、状态或其他非函数性质的对象。例如,整数、字符串、列表等基本数据类型对象就是不可调用对象。我们不能像函数一样将它们调用执行。
8.IPV4协议组
IPv4协议组是指在IPv4网络中使用的协议集合,这些协议共同组成了IPv4网络的通信基础。
以下是一些常见的IPv4协议组:
Internet Protocol (IP):IPv4协议是整个IPv4网络的基础,负责在网络中进行数据包的路由和传输。
Internet Control Message Protocol (ICMP):ICMP是用于网络故障诊断和错误报告的协议,如ping命令使用的就是ICMP协议。
Address Resolution Protocol (ARP):ARP用于将IPv4地址映射到对应的物理MAC地址,实现数据链路层和网络层之间的地址解析。
Internet Group Management Protocol (IGMP):IGMP协议用于在多播通信中管理组成员的加入和离开。
Transmission Control Protocol (TCP):TCP是一种可靠的、面向连接的协议,用于提供端到端的可靠数据传输。
User Datagram Protocol (UDP):UDP是一种无连接的协议,用于提供简单的数据传输服务,通常用于实时应用和广播通信。
Internet Control and Management (ICMP):ICMP协议用于支持与IP协议相关的控制和管理功能,如错误报告、回送和重定向等。
9.super()方法
super是一个内置函数,用于调用父类(超类)的方法。在类的继承关系中,子类可以通过super()函数调用父类的方法,以实现代码重用和拓展。super函数的常见用法是在子类的方法中调用父类的同名方法。调用父类方法的语法是super().父类方法名()
下面是一个示例,演示了如何使用super函数调用父类方法:
class ParentClass:
def my_method(self):
print("Parent Class Method")
class ChildClass(ParentClass):
def my_method(self):
super().my_method()
print("Child Class Method")
obj = ChildClass()
obj.my_method()
运行上述代码,输出结果为:
Parent Class Method
Child Class Method
10.短路运算
短路运算是一种逻辑运算中的特性,当计算一个复合逻辑表达式时,如果能够根据已知的部分结果确定整个表达式的结果,就会停止计算剩余的部分。这种操作可以提高代码的效率。在短路运算中,有两种常见的运算符:逻辑与运算符(and)和逻辑或运算符(or)。
逻辑与运算符(and):
在逻辑与运算中,只有当所有操作数都为真(True)时,整个表达式才会为真。如果其中一个操作数为假(False),整个表达式的值就会被确定为假。因此,如果左操作数为假,就没有必要再计算右操作数,直接返回假。
示例:
result = (False and some_function())
由于左操作数为假,在逻辑与运算中,右操作数 some_function() 不会被计算。
逻辑或运算符(or):
在逻辑或运算中,只要有一个操作数为真,整个表达式就会为真。如果其中一个操作数为真,整个表达式的值就会被确定为真。因此,如果左操作数为真,就没有必要再计算右操作数,直接返回真。
示例:
result = (True or some_function())
由于左操作数为真,在逻辑或运算中,右操作数 some_function()
不会被计算。