当前位置: 首页 > news >正文

Python 中的 *args 和 **kwargs

概述

*args 和 **kwargs 是 Python 中用于处理可变数量参数的语法,它们让函数能够接受任意数量的位置参数和关键字参数。

*args(可变位置参数)

作用

  • 接收任意数量的位置参数

  • 将这些参数作为元组传递给函数

基本用法

def function_with_args(*args):print(f"参数类型: {type(args)}")print(f"参数值: {args}")for i, arg in enumerate(args):print(f"第 {i+1} 个参数: {arg}")# 调用示例
function_with_args(1, 2, 3)
function_with_args('a', 'b', 'c', 'd')

输出:

参数类型: <class 'tuple'>
参数值: (1, 2, 3)
第 1 个参数: 1
第 2 个参数: 2
第 3 个参数: 3
实际应用示例
def calculate_sum(*numbers):"""计算任意数量数字的和"""return sum(numbers)print(calculate_sum(1, 2, 3))        # 输出: 6
print(calculate_sum(10, 20, 30, 40)) # 输出: 100

**kwargs(可变关键字参数)

作用

  • 接收任意数量的关键字参数

  • 将这些参数作为字典传递给函数

基本用法

def function_with_kwargs(**kwargs):print(f"参数类型: {type(kwargs)}")print(f"参数值: {kwargs}")for key, value in kwargs.items():print(f"{key}: {value}")# 调用示例
function_with_kwargs(name="Alice", age=25, city="Beijing")
function_with_kwargs(product="Laptop", price=999, brand="Dell", in_stock=True)
输出:
参数类型: <class 'dict'>
参数值: {'name': 'Alice', 'age': 25, 'city': 'Beijing'}
name: Alice
age: 25
city: Beijing

实际应用示例

def create_user_profile(**user_info):"""创建用户配置文件"""profile = {'username': user_info.get('username', 'anonymous'),'email': user_info.get('email', ''),'age': user_info.get('age', 0),'role': user_info.get('role', 'user')}# 添加额外的用户信息profile.update(user_info)return profileuser1 = create_user_profile(username="alice", email="alice@example.com")
user2 = create_user_profile(username="bob", age=30, role="admin", department="IT")
print(user1)
print(user2)

组合使用 *args 和 **kwargs

完整语法

def complex_function(required_arg, *args, **kwargs):print(f"必需参数: {required_arg}")print(f"额外位置参数: {args}")print(f"额外关键字参数: {kwargs}")# 调用示例
complex_function("hello", 1, 2, 3, name="Alice", age=25)

输出:

必需参数: hello
额外位置参数: (1, 2, 3)
额外关键字参数: {'name': 'Alice', 'age': 25}

实际应用:装饰器

def logger(func):"""记录函数调用信息的装饰器"""def wrapper(*args, **kwargs):print(f"调用函数: {func.__name__}")print(f"位置参数: {args}")print(f"关键字参数: {kwargs}")result = func(*args, **kwargs)print(f"返回值: {result}")return resultreturn wrapper@logger
def multiply_numbers(a, b, c=1):return a * b * c# 测试
multiply_numbers(2, 3)
multiply_numbers(2, 3, c=4)

参数解包

使用 * 解包序列

def print_coordinates(x, y, z):print(f"坐标: ({x}, {y}, {z})")coordinates = [10, 20, 30]
print_coordinates(*coordinates)  # 相当于 print_coordinates(10, 20, 30)

使用 ** 解包字典

def introduce_person(name, age, occupation):pyprint(f"{name} is {age} years old and works as a {occupation}")person_info = {"name": "Alice", "age": 25, "occupation": "engineer"}
introduce_person(**person_info)  # 相当于 introduce_person(name="Alice", age=25, occupation="enginee
http://www.dtcms.com/a/611329.html

相关文章:

  • 蘑菇街的网站建设如何做网站主赚钱
  • 全国网站直播平台被摧毁wordpress插件免费吗
  • 连锁餐饮行业ERP系统如何选择?
  • 做网站的绿色背景图有什么做木工的网站
  • 专业网网站建设赣州新闻头条
  • idea 启动失败,不加载自己的配置文件
  • 静态网站结构如何更新wordpress变色龙主题
  • 进入职场第五课——突破和跃升
  • SSN和ijtag在scan中的应用与区别
  • 网站设计总结与心得体会flash制作技巧
  • 怎么给网站做懒加载网站开发 非对称加密
  • 零偏压石墨烯探测器赋能《Nature Communications》披露全等离子体太赫兹收发芯片新突破
  • 在百度怎么建立自己的网站网推平台有哪些
  • 做搜狗pc网站点嘉上营销
  • Paimon的merge-engine配置
  • wordpress 站点图标网站源码下载了没有管理后台
  • C语言编译器在Win7系统下的安装与配置
  • 青岛集团网站建设宿州网站建设时间
  • Rust 中的 Tokio 线程同步机制
  • 平台网站建设方案书建设视频网站费用吗
  • 网站关键词字符编辑昌江网站建设
  • CRS税务合规解决方案:马来西亚税号 vs 新加坡自雇EP全面解析(中国卖家税务规划指南)
  • 基于Rust实现高性能数据处理引擎
  • 可以做网站引导页的页面中文域名注册 .网站
  • 问答社区网站建设艺术风格网站
  • 江苏企业建设网站公司网页制作基础教程黄洪杰
  • 做技术网站赚钱吗太原网络广告公司
  • 住房和城乡建设部网站注册山东网站建设最便宜
  • Redhat 8.10 离线升级 Redhat 9.6
  • 百日挑战——单词篇(第二十二天)