Python 函数的参数形式

Python 函数的参数形式

Python 函数的参数有多种形式,每种形式在不同的场景下使用。我们主要介绍以下几种:

  1. 位置参数
  2. 关键字参数
  3. 默认参数
  4. 可变位置参数(*args
  5. 可变关键字参数(**kwargs

1. 位置参数

位置参数是最常见的参数形式,调用函数时按照参数的顺序传递。

示例
def greet(name, age):print(f"Hello, my name is {name} and I am {age} years old.")# 调用
greet("Alice", 30)
# 输出: Hello, my name is Alice and I am 30 years old.

2. 关键字参数

关键字参数在调用函数时通过参数名传递,这样可以不按顺序传递参数。

示例
def greet(name, age):print(f"Hello, my name is {name} and I am {age} years old.")# 调用
greet(age=30, name="Alice")
# 输出: Hello, my name is Alice and I am 30 years old.

3. 默认参数

默认参数在定义函数时给定默认值,调用函数时可以选择性传递这些参数。

示例
def greet(name, age=20):print(f"Hello, my name is {name} and I am {age} years old.")# 调用
greet("Alice")
# 输出: Hello, my name is Alice and I am 20 years old.greet("Bob", 25)
# 输出: Hello, my name is Bob and I am 25 years old.

4. 可变位置参数(*args

使用 *args 允许函数接收任意数量的位置参数,*args 将这些参数打包成一个元组。

示例
def greet(*args):for arg in args:print(f"Hello, {arg}!")# 调用
greet("Alice", "Bob", "Charlie")
# 输出:
# Hello, Alice!
# Hello, Bob!
# Hello, Charlie!

5. 可变关键字参数(**kwargs

使用 **kwargs 允许函数接收任意数量的关键字参数,**kwargs 将这些参数打包成一个字典。

示例
def greet(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")# 调用
greet(name="Alice", age=30, city="New York")
# 输出:
# name: Alice
# age: 30
# city: New York

综合示例

结合使用位置参数、关键字参数、默认参数、可变位置参数和可变关键字参数。

def greet(greeting, *args, punctuation="!", **kwargs):# 处理可变位置参数for name in args:print(f"{greeting}, {name}{punctuation}")# 处理可变关键字参数for key, value in kwargs.items():print(f"{key}: {value}")# 调用
greet("Hello", "Alice", "Bob", punctuation=".", age=30, city="New York")
# 输出:
# Hello, Alice.
# Hello, Bob.
# age: 30
# city: New York

适用场景总结

  1. 位置参数:适合参数数量和顺序固定的情况。
  2. 关键字参数:适合参数顺序不固定或参数较多的情况,调用时更加直观。
  3. 默认参数:适合参数有默认值且通常不需要改变的情况,减少调用时的参数数量。
  4. 可变位置参数(*args:适合参数数量不确定的情况,如处理列表或元组。
  5. 可变关键字参数(**kwargs:适合关键字参数数量不确定的情况,如处理字典。

示例总结

# 位置参数
def greet(name, age):print(f"Hello, my name is {name} and I am {age} years old.")
greet("Alice", 30)# 关键字参数
greet(age=30, name="Alice")# 默认参数
def greet(name, age=20):print(f"Hello, my name is {name} and I am {age} years old.")
greet("Alice")
greet("Bob", 25)# 可变位置参数(*args)
def greet(*args):for arg in args:print(f"Hello, {arg}!")
greet("Alice", "Bob", "Charlie")# 可变关键字参数(**kwargs)
def greet(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")
greet(name="Alice", age=30, city="New York")# 综合示例
def greet(greeting, *args, punctuation="!", **kwargs):for name in args:print(f"{greeting}, {name}{punctuation}")for key, value in kwargs.items():print(f"{key}: {value}")
greet("Hello", "Alice", "Bob", punctuation=".", age=30, city="New York")

通过这些例子和讲解,希望大家能清楚理解 Python 函数的各种参数形式及其适用场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/50498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python题解

宽度与对齐 输出455、-123、987654,宽度为5,分别左对齐和右对齐 格式 输入格式: 无 输出格式: 输出为整型,空格分隔。每个数的输出占一行 样例 1 输入: 无 复制 输出: 455 455 -123 -123 98…

Vue的SSR和预渲染:提升首屏加载速度与SEO效果

引言 在现代Web应用开发中,首屏加载速度和搜索引擎优化(SEO)是衡量应用性能的重要指标。Vue.js 作为流行的前端框架,提供了服务器端渲染(SSR)和预渲染(prerendering)两种技术来提升这些指标。本文将深入探讨如何使用 Vue 的 SSR 和预渲染技术,提供详细的代码示例和最…

FFmpeg源码:av_probe_input_format3函数分析

一、av_probe_input_format3函数的声明 av_probe_input_format3函数声明在FFmpeg源码(本文演示用的FFmpeg源码版本为5.0.3)的头文件libavformat/avformat.h中: /*** Guess the file format.** param is_opened Whether the file is already…

Go语言的数据结构

数据结构 数组 支持多维数组,属于值类型,支持range遍历 例子:随机生成长度为10整数数组 package main import ("fmt""math/rand" ) // 赋值 随机获取100以内的整数 func RandomArrays() {var array [10]int //声明var…

【MySQL进阶篇】锁:全局锁、表级锁以及行级锁

一、锁的概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须要解决的一个问题&am…

C语言11 结构体、共用体、枚举和重定义

目录 结构体(Struct) 定义结构体 声明和初始化结构体变量 访问结构体成员 嵌套结构体 指向结构体的指针 共用体(Union) 定义共用体 声明和使用共用体 重定义(Typedef) 定义类型别名 使用类型别…

Person Re-Identification(Re-ID)的分类

行人重识别(Person Re-Identification, Re-ID)是计算机视觉和深度学习中的一个重要任务,旨在通过图像或视频中的行人外观信息来识别和追踪同一个人在不同摄像头视角下的出现。根据任务的不同,行人重识别可以分为以下几类&#xff…

室内消防逃生通道占用检测AI算法:科技筑防,守护生命通道

随着城市化进程的加快,高层建筑和大型公共场所的数量急剧增加,消防安全问题愈发凸显。其中,室内消防逃生通道的畅通性直接关系到火灾发生时人员的安全疏散。然而,由于各种原因,如杂物堆放、车辆停放等,消防…

nacos 2.3.2 若依使用mysql

1)从官网下载 nacos,如果下载慢,关注从本人发布上传下载也可以 2)修改配置文件 【config】-【application.properties】 ### Deprecated configuration property, it is recommended to use spring.sql.init.platform replaced.…

SpringBoot实现定时任务-@Scheduled

在Java编程中,Scheduled 注解是 Spring Framework 提供的一个用于定时任务的注解。 Scheduled可以将一个方法配置为定时执行的任务。 以下是一些基本用法: 1.固定速度 fixedRate指两次任务的开始时间间隔。所以存在第二次任务开始时,第一…

LeetCode 2844.生成特殊数字的最少操作(哈希表 + 贪心)

给你一个下标从 0 开始的字符串 num ,表示一个非负整数。 在一次操作中,您可以选择 num 的任意一位数字并将其删除。请注意,如果你删除 num 中的所有数字,则 num 变为 0。 返回最少需要多少次操作可以使 num 变成特殊数字。 如…

mysql各个参数调整

innodb_lock_wait_timeout 事务锁释放时间

前端知识--前端访问后端技术Ajax及框架Axios

一、异步数据请求技术----Ajax Ajax是前端访问后端的技术,为异步请求(不刷新页面,请求数据,只更新局部数据)。 例如:在京东网站中搜索电脑,就会出现一些联想搜索,但此时页面并没有…

【技术支持】canvas转换为图片或PDF保存电脑

注意:有些网站可能由于canvas跨域污染问题,无法使用toBlob,所以无法转换 开发者工具中,选中需要转换的canvas元素(使其可以使用$0语法) 控制台输入如下代码 $0.toBlob(function (blob) {var link document…

Window下CLion实现本机通过socket通信-C++

1.引言-什么是socket socket即套接字,用于描述地址和端口,是一个通信链的句柄。应用程序通过socket向网络发出请求或者回应。 sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字&#xff…

go语言开发Prometheus Exporter(DM数据库)

一、介绍 源码步骤基于dameng_exporter源码讲解,看完本篇文章可以直接进行二次开发。 dameng exporter的开源地址:https://github.com/gy297879328/dameng_exporter(可直接对接prometheusgrafana 提供表盘) 开发一个exporter 其…

Linux中的三类读写函数

文件IO和标准IO的区别 遵循标准: 文件IO遵循POSIX标准,主要在类UNIX环境下使用。标准IO遵循ANSI标准,具有更好的可移植性,可以在不同的操作系统上重新编译后运行。可移植性: 文件IO的可移植性相对较差,因为…

基于大模型零代码1小时完成国标数据分级分类近义词库构建及思考

1. 任务背景及困难分析 因项目要求,需要对国家标准国民经济行业分类-GB/T 4754-2017【1】进行近义词库的构建,时间非常紧,只给了很短时间进行处理,目标是构建一份中等粒度的行业近义词库。 搁在以前,可能需要点时…

<设计模式> 单例模式

单例模式 模式介绍:保证一个类仅有一个实例,并提供一个全局访问点来获取这个唯一的实例。主要解决:一个全局使用的类频繁地创建与销毁。关键代码:构造函数是私有的。 应用场景 数据库连接池:数据库连接是一种宝贵的…

Netty的源码分析和业务场景

Netty 是一个高性能、异步事件驱动的网络应用框架,它基于 Java NIO 构建,广泛应用于互联网、大数据、游戏开发、通信行业等多个领域。以下是对 Netty 的源码分析、业务场景的详细介绍: 源码概述 Netty 的核心组件:Netty 的架构设…