Python(九十三)函数的参数总结

news2024/11/25 20:26:03

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。
☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无论你是学生、职场人士还是对编程感兴趣的爱好者,都能从中受益。跟着我的学习笔记一起学习python吧。
🌙专栏目标:本专栏的目标是帮助我自己记忆、方便回顾所学知识以及帮助其他想学习python的小伙伴掌握Python编程语言的基本概念和技巧,并逐步提高我们的编程能力。通过这个专栏,我们将学会如何编写Python代码,理解各种数据类型、控制结构和函数,掌握常用的Python模块和库,以及应用Python解决实际问题。

⭐️ 专栏主要内容: 主要学习python的开发环境搭建;Python的基础知识,包括变量、数据类型、条件语句和循环等;python的数据结构和算法;python的函数和模块;python的文件处理等。
🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。
💑专栏主页:从零开始的Python入门之路

在这里插入图片描述

在Python中,函数参数的灵活性是编程中的一个关键方面。不同类型的参数允许我们以多种方式定义和调用函数。在这篇博客中,我将详细介绍函数参数的各种形式,包括位置实参、关键字实参、默认值形参、关键字形参、个数可变的位置形参和个数可变的关键字形参。

文章目录

    • 位置实参
    • 关键字实参
    • 默认值形参
    • 关键字形参
    • 个数可变的位置形参
    • 个数可变的关键字形参
    • 总结

位置实参

位置实参是最常见的参数传递方式,将序列中的每个元素都转换为位置实参,使用*操作符。

def greet(name, age):
    """
    函数用于打印问候语,接受两个位置实参。
    
    参数:
    - name: 字符串,表示要问候的人的名字。
    - age: 整数,表示要问候的人的年龄。
    """
    print(f"Hello, {name}! You are {age} years old.")

# 调用函数,传递位置实参
greet(*("Alice", 25))

运行结果:

Hello, Alice! You are 25 years old.

解释:使用*操作符将元组中的元素转换为位置实参,传递给greet函数。

关键字实参

关键字实参是通过将字典中的每个键值对转换为关键字实参,使用**操作符。

def greet(name, age):
    """
    函数用于打印问候语,接受两个关键字实参。
    
    参数:
    - name: 字符串,表示要问候的人的名字。
    - age: 整数,表示要问候的人的年龄。
    """
    print(f"Hello, {name}! You are {age} years old.")

# 调用函数,传递关键字实参
greet(**{"name": "Bob", "age": 30})

运行结果:

Hello, Bob! You are 30 years old.

解释:使用**操作符将字典中的键值对转换为关键字实参,传递给greet函数。

默认值形参

默认值形参是在函数定义时为参数指定默认值,如果调用时未提供该参数的值,则使用默认值。

def greet(name, greeting="Hello"):
    """
    函数用于打印问候语,默认问候语为"Hello"。
    
    参数:
    - name: 字符串,表示要问候的人的名字。
    - greeting: 字符串,表示问候语,默认值为"Hello"。
    """
    print(f"{greeting}, {name}!")

# 调用函数,未提供默认值形参的值
greet("Charlie")

运行结果:

Hello, Charlie!

解释:greeting参数有一个默认值"Hello",如果在调用函数时未提供该参数的值,则使用默认值。

关键字形参

关键字形参是在函数定义时使用*将之后的参数强制为关键字形式,调用时必须使用关键字方式传递。

def greet(name, *, greeting="Hello"):
    """
    函数用于打印问候语,强制使用关键字形参。
    
    参数:
    - name: 字符串,表示要问候的人的名字。
    - greeting: 字符串,表示问候语,默认值为"Hello",强制使用关键字形参。
    """
    print(f"{greeting}, {name}!")

# 调用函数,使用关键字形参
greet("David", greeting="Hi there")

运行结果:

Hi there, David!

解释:使用*将之后的参数强制为关键字形式,调用时必须使用关键字方式传递。

个数可变的位置形参

个数可变的位置形参允许函数接受任意数量的位置参数,使用*操作符。

def variable_args(*args):
    """
    函数用于演示个数可变的位置参数。
    
    参数:
    - args: 个数可变的位置参数,封装成元组。
    """
    print("Received arguments:", args)

# 调用函数,传递不同数量的位置参数
variable_args(1, 2, 3)
variable_args('a', 'b', 'c', 'd')

运行结果:

Received arguments: (1, 2, 3)
Received arguments: ('a', 'b', 'c', 'd')

解释:*args允许函数接受任意数量的位置参数,并将它们封装成一个元组。

个数可变的关键字形参

个数可变的关键字形参允许函数接受任意数量的关键字参数,使用**操作符。

def variable_kwargs(**kwargs):
    """
    函数用于演示个数可变的关键字形参。
    
    参数:
    - kwargs: 个数可变的关键字形参,封装成字典。
    """
    print("Received keyword arguments:", kwargs)

# 调用函数,传递不同数量的关键字参数
variable_kwargs(name='Alice', age=25)
variable_kwargs(city='Wonderland', profession='Adventurer')

运行结果:

Received keyword arguments: {'name': 'Alice', 'age': 25}
Received keyword arguments: {'city': 'Wonderland', 'profession': 'Adventurer'}

解释:**kwargs允许函数接受任意数量的关键字参数,并将它们封装成一个字典。

总结

在Python函数中,参数的灵活使用对于构建强大而灵活的函数至关重要。位置实参、关键字实参、默认值形参、关键字形参、个数可变的位置形参和个数可变的关键字形参都是Python函数中常用的参数形式,它们为函数提供了多样性和适应性,使得函数的定义和调用更为灵活和自由。

参考链接:

  • Python 官方文档 - 函数定义
  • Real Python - Python Args and Kwargs: Demystified

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

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

相关文章

不要0!我们需要1!

解法一&#xff1a; 十进制转二进制同时数1的个数 #include<iostream> #define endl \n using namespace std; void solve(int x) {int cnt 0;while (x) {if (x % 2 1) cnt;x / 2;}cout << cnt << endl; } int main() {int n;cin >> n;solve(n);re…

2024-2-19 LC200. 岛屿数量

其实还是用并查集将 独立的岛屿视为独立的子集。 count其实是集合的个数&#xff0c;同一个块岛屿被压缩成了一个集合&#xff0c;而每个表示海洋的格子依然被看作独立的集合&#xff0c;在所有的格子都走完一遍后&#xff0c;count 被压缩的岛屿 所有表示海洋的独立格子的数…

2024.2.19

使用fread和fwrite完成两个文件的拷贝 #include<stdio.h> #include<stdlib.h> #include<string.h> int main(int argc, const char *argv[]) {FILE *fpNULL;if((fpfopen("./tset.txt","w"))NULL){perror("open error");retur…

免费白嫖一个互联网创业者交流论坛,真香!

先说最重要的 当前小报童39.9&#xff0c;2.23之后会涨价到99.9 现在扫码购买&#xff0c;然后凭借截图找我全款报销&#xff0c;全款报销&#xff01; 扫码报销&#xff0c;备注“烽狂创客” 下面来看下这个专栏的内容 专栏作者是谁 挽歌&#xff0c;20岁&#xff0c;985大…

1. 处理日期和时间的 chrono 库

1. 处理日期和时间的 chrono 库 C11 中提供了日期和时间相关的库 chrono&#xff0c;通过 chrono 库可以很方便地处理日期和时间&#xff0c;为程序的开发提供了便利。chrono 库主要包含三种类型的类&#xff1a;时间间隔duration、时钟clocks、时间点time point。 1.1 基本常…

[计算机网络]---Https协议

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、https协…

课上题目代码

dijkstra和spfa区别 &#xff1a; dikstra是基于贪心的思想&#xff0c;每次选择最近的点去更新其它点&#xff0c;过后就不再访问。而在spfa算法中&#xff0c;只要有某个点的距离被更新了&#xff0c;就把它加到队列中&#xff0c;去更新其它点&#xff0c;所有每个点有被重…

Java中的线程(创建多线程的三种方法)

Java中的线程——创建 创建多线程方式一&#xff1a;继承Thread类方式二&#xff1a;实现Runnable接口方式三&#xff1a;实现Callable接口 线程的常用API 创建多线程 方式一&#xff1a;继承Thread类 定义一个子类MyThread继承线程类java.lang.Thread&#xff0c;重写run方法…

vue3+ts项目搭建

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《vue3实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途。 目录 前置条件 基础工程模板搭建 测试环境变量是否配置成功 初始化vue项目 安装常用依赖 基础项目目录介绍 前置条件 请确…

自动化测试框架搭建全过程

前段时间写了一系列自动化测试相关的文章&#xff0c;当然更多的是方法和解决问题的思路角度去阐述我的一些观点。这篇文章来聊聊新手如何从零到一落地实践接口自动化测试。 为什么要做接口测试 测试理念的演变 早些时候&#xff0c;软件研发交付流程大多遵循V型或W型的瀑布…

9、内网安全-横向移动Exchange服务有账户CVE漏洞无账户口令爆破

用途&#xff1a;个人学习笔记&#xff0c;有所借鉴&#xff0c;欢迎指正&#xff01; 背景&#xff1a; 在内网环境的主机中&#xff0c;大部分部署有Exchange邮件服务&#xff0c;对于Exchange服务的漏洞也是频出&#xff0c;在这种情况下&#xff0c;如果拿到内网中一台主机…

2024 年 2 月 TIOBE 指数:最流行的 10 种编程语言

Go 进入了 TIOBE 指数的前 10 名&#xff0c;这是谷歌编程语言有史以来的最高位置。 在 2024 年 2 月的 TIOBE 软件最受欢迎的编程语言列表中&#xff0c;Python、C 和 C 保持了它们的领先地位&#xff08;图 A&#xff09;。TIOBE 的专有积分系统考虑了根据多种大型搜索引擎&…

office的excel中使用,告诉我详细的解决方案,如何变成转化为金额格式

在Office的Excel中&#xff0c;如果你想将名为"MEREFIELD"的公式结果转换为金额格式&#xff0c;你可以遵循以下详细步骤来实现&#xff1a; 书写MEREFIELD公式&#xff1a; 首先&#xff0c;在Excel中输入或确认你的MEREFIELD公式。例如&#xff0c;假设这个公式是用…

剑指offer刷题笔记-链表

少年何妨梦摘星 敢挽桑弓射玉衡 解决与链表相关的问题总是有大量的指针操作&#xff0c;而指针操作的代码总是容易出错的。很多面试官喜欢出与链表相关的问题&#xff0c;就是想通过指针操作来考察应聘者的编码功底。 题目链接来自于 AcWing 、Leetcode&#xff08;LCR&#xf…

微信美容预约小程序开发实战教程,快速掌握开发技巧

如果你想开发一个美容美发小程序&#xff0c;以下是一个搭建指南&#xff0c;供你参考。 1. 使用第三方制作平台 首先&#xff0c;你需要使用一个第三方制作平台&#xff0c;如乔拓云网。在该平台上&#xff0c;你需要注册并登录&#xff0c;然后点击【轻应用小程序】进入设计…

自动化测试框架搭建

思想&#xff1a; 1、基本目录的搭建 report:静态输出目录(报告或者日志) data&#xff1a;静态输入目录(可以存放Excel数据&#xff0c;被读取的一些数据) utils:实用方法层(这里存放的是项目的公共方法&#xff0c;一般拿到别…

2024年2月12日-2月18日周报

文章目录 1. 本周计划2. 完成情况2.1 论文摘要2.2 数据集2.3 基准测试 3. 总结及收获4. 下周计划 1. 本周计划 阅读论文《 E F W I E^{FWI} EFWI: Multiparameter Benchmark Datasets for Elastic Full Waveform Inversion of Geophysical Properties》 了解一种新型的数据集&…

备战蓝桥杯 Day7(序列dp)

基本分类 &#xff08;1&#xff09;单序列 a.最大子段和 b.最长上升子序列LIS &#xff08;2&#xff09;多序列 a.最长公共子序列 b.编辑距离 最大子段和 单序列dp一般开一维数组 最大子段和 - 洛谷https://www.luogu.com.cn/problem/P1115 分析&#xff1a; 写出状态和状…

chrome版本117驱动下载路,解决版本不匹配问题

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

生成式 AI - Diffusion 模型的数学原理(2)

来自 论文《 Denoising Diffusion Probabilistic Model》&#xff08;DDPM&#xff09; 论文链接&#xff1a; https://arxiv.org/abs/2006.11239 Hung-yi Lee 课件整理 文章目录 一、基本概念二、VAE与Diffusion model三、算法解释四、训练过程五、推理过程 一、基本概念 Diff…