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

Python 程序设计讲义(57):Python 的函数——可变参数的使用

Python 程序设计讲义(57):Python 的函数——可变参数的使用

目录

  • Python 程序设计讲义(57):Python 的函数——可变参数的使用
    • 一、使用*args定义可变位置参数
    • 二、使用**kwargs定义可变关键字参数
    • 三、可变参数的应用场景
        • 1、动态参数列表
        • 2、处理配置选项
        • 3、 组合参数

Python中,函数的参数可以是固定的,也可以是可变的。可变参数允许函数接受任意数量的参数。Python 提供了两种主要的可变参数形式:*args**kwargs

一、使用*args定义可变位置参数

*args 允许将多个非关键字参数传递给函数。*args 将多个参数打包为一个元组。

例如:

def func1(*args):print(args)for x in args:print('hello',x)func1('zhangsan','litao','wanggang')程序的运行结果为:
('zhangsan', 'litao', 'wanggang')
hello zhangsan
hello litao
hello wanggang

二、使用**kwargs定义可变关键字参数

**kwargs 允许你将多个关键字参数传递给函数。**kwargs 将参数打包为一个字典。

例如:

def func1(**kwargs):print(kwargs)for key,value in kwargs.items():print('{}:{}'.format(key,value))func1(name='litao',age=25,city="xinxiang")程序的运行结果为:
{'name': 'litao', 'age': 25, 'city': 'xinxiang'}
name:litao
age:25
city:xinxiang

三、可变参数的应用场景

可变参数的灵活性使其在多种场景中非常有用。

1、动态参数列表

在某些情况下,函数的参数数量可能不确定。使用可变参数可以轻松解决这一问题。

例如:设计一个函数,求一组数值的平均数

def average(*args):return sum(args) / len(args)avg=average(1,2,3,4,5,6,7,8,9,10)
print(avg)
avg=average(5.8,-58.7,69,98,-1.25,12)
print(avg)程序的运行结果为:
5.5
20.808333333333334
2、处理配置选项

使用 **kwargs 可以方便地接收一组不确定的关键字参数。

例如:

def connect_database(**kwargs):host = kwargs.get('host', 'localhost')port = kwargs.get('port', 3306)user = kwargs.get('user', 'admin')password = kwargs.get('password', '')print(f"Connecting to database at {host}:{port} as {user}")connect_database(host="127.0.0.1", user="user1", password="pwd")程序的运行结果为:
Connecting to database at 127.0.0.1:3306 as user1
3、 组合参数

某些情况下,可能需要同时使用位置参数和关键字参数。这时可以将 *args**kwargs 结合使用。

例如:

def display_info(age, *args, **kwargs):print(f"Age: {age}")for name in args:print(f"Name: {name}")for key, value in kwargs.items():print(f"{key}: {value}")display_info(30, "Alice", "Bob", city="New York", occupation="Engineer")程序的运行结果为:
Age: 30
Name: Alice
Name: Bob
city: New York
occupation: Engineer
http://www.dtcms.com/a/312465.html

相关文章:

  • 专网内网IP攻击防御:从应急响应到架构加固
  • 老电脑PE下无法读取硬盘的原因
  • 【LeetCode刷题指南】--二叉树的后序遍历,二叉树遍历
  • 7.14.散列表的基本概念(散列表又名哈希表,Hash Table)
  • 01.Redis 概述
  • 嵌入式通信协议解析(基于红外NEC通信协议)
  • 旧笔记本电脑如何安装飞牛OS
  • 前端工程化:npmvite
  • 解剖 .NET 经典:从 Component 到 BackgroundWorker
  • python基础语法6,简单文件操作(简单易上手的python语法教学)(课后习题)
  • Jetpack Compose for XR:构建下一代空间UI的完整指南
  • Hyper-V + Centos stream 9 搭建K8s集群(二)
  • MySQL 索引失效的场景与原因
  • k8s+isulad 国产化技术栈云原生技术栈搭建2-crictl
  • Linux进程启动后,监听端口几分钟后消失之问题分析
  • MySQL 事务原理 + ACID笔记
  • HiveMQ核心架构思维导图2024.9(Community Edition)
  • Educational Codeforces Round 171 (Rated for Div. 2)
  • 06.Redis 配置文件说明
  • 【openlayers框架学习】十一:openlayers实战功能介绍与前端设计
  • Azure DevOps 中的代理
  • Azure DevOps — Kubernetes 上的自托管代理 — 第 4 部分
  • 2025年6月电子学会青少年软件编程(C语言)等级考试试卷(七级)
  • Mongo索引
  • 0基礎網站開發技術教學(二) --(前端篇 2)--
  • 【超分辨率专题】PiSA-SR:单步Diff超分新突破,即快又好,还能在线调参
  • 信息量,惊奇度,熵、KL散度(相对熵),交叉熵、最大似然估计MLE与最小化交叉熵的等价证明、
  • 每日一博 - 异步编程最佳实践
  • ABAP SQL更新DB小技巧 WITH INDICATORS
  • Python-初学openCV——图像预处理(六)