目录
一、python的参数汇总:
1、位置参数
这是最常见的参数类型,函数通过位置顺序来匹配传入的参数值。
def func(arg1, arg2, arg3):
# 函数体
2、默认参数
这允许在定义函数时为参数指定默认值。如果调用函数时没有提供对应参数值,则使用默认值。
def func(arg1, arg2=10, arg3="hello"):
# 函数体
3、关键字参数
在调用函数时,通过参数名指定参数值,这样可以忽略参数的位置。
func(arg1=42, arg2=100)
4、可变长位置参数
使用星号(*)来表示接受任意数量的位置参数,这些参数会被收集成一个元组。
def func(*args):
# args 是包含所有位置参数的元组
5、可变长关键字参数
使用两个星号(**)来表示接受任意数量的关键字参数,这些参数会被收集成一个字典。
def func(**kwargs):
# kwargs 是包含所有关键字参数的字典
6、强制关键字参数 :
在函数定义时使用星号(*)后面的参数,将强制调用时必须使用关键字来指定参数。
def func(arg1, *, arg2, arg3):
# 函数体
7、包裹位置参数
在调用函数时,使用星号(*)来解包装被打包的位置参数。
def func(arg1, arg2, arg3):
# 函数体
args = [1, 2, 3]
func(*args)
8、包裹关键字参数
在调用函数时,使用两个星号(**)来解包装被打包的关键字参数。
def func(arg1, arg2, arg3):
# 函数体
kwargs = {"arg1": 1, "arg2": 2, "arg3": 3}
func(**kwargs)
二、@property:
在Python中,@property 是一种装饰器用于将类方法转换为只读属性。它允许你通过调用类似于属性访问的方式来访问方法,而不需要显式地调用方法。
使用 @property 装饰器将这个方法转换为只读属性,而不是一个可调用的方法。
下面是一个使用 @property 装饰器的示例:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@property
def area(self):
return 3.14 * self._radius * self._radius
@property
def circumference(self):
return 2 * 3.14 * self._radius
# 创建一个 Circle 实例
circle = Circle(5)
# 通过属性访问方式获取半径和面积
print(circle.radius) # 输出: 5
print(circle.area) # 输出: 78.5
# 注意:circumference 是只读属性,尝试赋值会引发 AttributeError
# circle.circumference = 30 # 会引发 AttributeError
三、python的await和async:
await 和 async 是Python中用于异步编程的关键字。
async 是用于定义异步函数的关键字。异步函数是一种特殊类型的函数,可以包含 await 关键字,以便在其内部等待异步操作完成。当你在函数定义前加上 async 关键字时,它会成为一个异步函数。
async def async_function():
# 异步函数体
await 通常用于等待一个异步操作完成。它只能在异步函数内部使用,用于标记一个异步操作的点,并且会暂时挂起该异步函数的执行,直到异步操作完成并返回结果。在等待期间,事件循环可以去执行其他任务,从而实现非阻塞的异步执行。
async def async_function():
result = await some_async_operation()
# 继续执行异步函数体,使用result等待的结果
四、海象运算符:
海象运算符是Python3.8引入的新特性,它的符号是 :=。这个运算符允许我们在表达式中同时进行赋值和返回表达式的值。
在以前的版本中,我们可能需要为了获取某个表达式的值而重复计算相同的表达式,或者为了赋值而必须创建一个额外的变量。使用海象运算符,我们可以简化这些操作
#基础写法
x=5
if x<10:
print("hello fancy!")
#海象运算符写法:
if (x:=5) < 10:
print("hello fancy!")
五、Celery:
Celery是一个用于处理分布式任务队列的Python库,它允许你将耗时的任务异步处理,从而提高应用程序的性能和响应能力。它在分布式系统中常用于后台任务处理、定时任务、消息队列等场景。
下面是一个简单的Celery案例:
1.创建一个文件 tasks.py 来定义我们的Celery任务:
# tasks.py
from celery import Celery
# 创建Celery应用
app = Celery('myapp', broker='redis://localhost:6379/0', backend='redis://localhost:6379/1')
# 定义任务函数
@app.task
def add(x, y):
return x + y
2.启动Celery执行器:在命令行中执行以下命令,以启动Celery执行器:
celery -A tasks worker --loglevel=info
3.调用任务:现在,我们可以在应用程序的其他部分调用定义的任务函数。
# main.py
from tasks import add
result = add.delay(3, 5)
print("Task submitted. Waiting for the result...")
# 等待任务执行完成,并获取结果
print("Result:", result.get())
4.运行应用程序:在命令行中运行 main.py 文件:
python main.py
这是一个简单的Celery案例,它将 add 函数异步执行,并返回计算结果。