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

❤️ 专栏简介:本专栏记录了我个人从零开始学习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.mzph.cn/news/690412.shtml

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

相关文章

网站常见的反爬手段及反反爬思路

摘要:介绍常见的反爬手段和反反爬思路,内容详细具体,明晰解释每一步,非常适合小白和初学者学习!!! 目录 一、明确几个概念 二、常见的反爬手段及反反爬思路 1、检测user-agent 2、ip 访问频率的限制 …

Stochastic Depth 原理与代码解析

paper:Deep Networks with Stochastic Depth official implementation:https://github.com/yueatsprograms/Stochastic_Depth third-party implementation:https://github.com/open-mmlab/mmcv/blob/main/mmcv/cnn/bricks/drop.py 存在的问…

【day01】每天三道 java后端面试题:JDK、JRE和JVM | 字节码 | ACID

文章目录 1. JDK, JRE, JVM分别是什么?有什么区别?2. 什么是字节码?采用字节码的最大好处是什么?3. 什么是数据库事务?讲一下事务的ACID特性。 1. JDK, JRE, JVM分别是什么?有什么区别? 答题思路…

深度解析 Transformer 模型:原理、应用与实践指南【收藏版】

深度解析 Transformer 模型:原理、应用与实践指南 1. Transformer 模型的背景与引言2. Transformer 模型的原理解析2.1 自注意力机制(Self-Attention)自注意力机制原理 2.2 多头注意力机制(Multi-Head Attention)多头注…

java+vue_springboot企业设备安全信息系统14jbc

企业防爆安全信息系统采用B/S架构,数据库是MySQL。网站的搭建与开发采用了先进的java进行编写,使用了vue框架。该系统从三个对象:由管理员、人员和企业来对系统进行设计构建。主要功能包括:个人信息修改,对人员管理&am…

C++ 浮点数二分 数的三次方根

给定一个浮点数 n ,求它的三次方根。 输入格式 共一行,包含一个浮点数 n 。 输出格式 共一行,包含一个浮点数,表示问题的解。 注意,结果保留 6 位小数。 数据范围 −10000≤n≤10000 输入样例: 1000.00…

树与二叉树

树与二叉树 文章目录 树与二叉树一、树的概念及结构1.、树的概念2、树的相关概念1.3 树的表示 二、二叉树1.概念2、特殊的二叉树3、二叉树的性质4、二叉树的存储结构 三、二叉树的顺序结构及实现1、二叉树的顺序结构2、堆的概念及结构3、堆的实现 四、二叉树链式结构的实现1、遍…

python统计分析——一元线性回归分析

参考资料:用python动手学统计学 1、导入库 # 导入库 # 用于数值计算的库 import numpy as np import pandas as pd import scipy as sp from scipy import stats # 用于绘图的库 import matplotlib.pyplot as plt import seaborn as sns sns.set() # 用于估计统计…

JAVA常见IO模型 BIO、NIO、AIO总结

BIO Blocking IO 同步阻塞型IO。当系统进行IO读写的时候,会阻塞,直到IO读写完毕。比如调用系统Read后,需要将内核空间的数据读取到用户空间。需要等待内核空间 数据准备,数据就绪,拷贝数据,线程一直处于阻…

IO进程:fread\fwrite图像拷贝,read\write文件拷贝,时间函数

1.使用fread、fwrite实现图片拷贝 程序代码&#xff1a; 1 #include<myhead.h>2 int main(int argc, const char *argv[])3 {4 //判断传入文件个数5 if(argc!3)6 {7 printf("input file error\n");8 printf("usage:./a.out …

【QCA6174】SDX12+QCA6174驱动屏蔽120/124/128信道修改方案

SDX12基线版本 SDX12.LE.1.0-00215-NBOOT.NEFS.PROD-1.39743.1 问题描述 对于欧洲国家来说,默认支持DFS信道,但是有三个信道比较特殊,是天气雷达信道,如下图所示120、124、128,天气雷达信道有个特点就是在信号可以发射之前需要检测静默15min,如果信道自动选择到了天气雷达…

BI 数据分析,数据库,Office,可视化,数据仓库

AIGC ChatGPT 职场案例 AI 绘画 与 短视频制作 PowerBI 商业智能 68集 Mysql 8.0 54集 Oracle 21C 142集 Office 2021实战应用 Python 数据分析实战&#xff0c; ETL Informatica 数据仓库案例实战 51集 Excel 2021实操 100集&#xff0c; Excel 2021函数大全 80集 Excel 2021…

阿里云服务器镜像选择方法详解,这么选就对了!

阿里云服务器镜像怎么选择&#xff1f;云服务器操作系统镜像分为Linux和Windows两大类&#xff0c;Linux可以选择Alibaba Cloud Linux&#xff0c;Windows可以选择Windows Server 2022数据中心版64位中文版&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器操…

HarmonyOS 鸿蒙应用开发(十一、面向鸿蒙开发的JavaScript基础)

ArkTS 是HarmonyOS&#xff08;鸿蒙操作系统&#xff09;原生应用开发的首选语言。它是用于构建用户界面的一种TypeScript方言&#xff0c;扩展了TypeScript以适应HarmonyOS生态系统的UI开发需求。ArkTS 融合了TypeScript的静态类型系统和现代UI框架的设计理念&#xff0c;为开…

练习题解(关于最短路径)

目录 1.租用游艇 2.邮递员送信 3.【模板】单源最短路径&#xff08;标准版&#xff09; 1.租用游艇 P1359 租用游艇 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 输入数据&#xff1a; 3 5 15 7 因为这道题数据不大&#xff0c;所有我们直接使用Floyd 算法。 这道题大…

Linux系统——防火墙Firewalld

目录 一、firewalld介绍 1.归入zone顺序 2.firewalld zone分类 3.预定义服务 二、图形化操作 1.打开firewalld图形化界面 2.以http服务为例&#xff0c;打开httpd服务 3.修改端口号 三、命令行配置 1.基础配置 2.查看现有firewalld设置 3.设置查看默认区 4.添加源…

类(接口)图几种箭头含义

导语 在平时的开发中&#xff0c;难免会遇到画UML图的时候&#xff0c;也就是我们所说的类图&#xff0c;但是UML图中的箭头多种多样&#xff0c;所代表的含义也是各不相同&#xff0c;今天我们就来说说这几种箭头所代表的含义。 1 泛化 概念&#xff1a;泛化表示一个更泛化的元…

CTFshow web(php命令执行 55-59)

web55 <?php /* # -*- coding: utf-8 -*- # Author: Lazzaro # Date: 2020-09-05 20:49:30 # Last Modified by: h1xa # Last Modified time: 2020-09-07 20:03:51 # email: h1xactfer.com # link: https://ctfer.com */ // 你们在炫技吗&#xff1f; if(isset($_GET[…

Jetpack 之Glance+Compose实现一个小组件

Glance&#xff0c;官方对其解释是使用 Jetpack Compose 样式的 API 构建远程 Surface 的布局&#xff0c;通俗的讲就是使用Compose风格的API来搭建小插件布局&#xff0c;其最新版本是2022年2月23日更新的1.0.0-alpha03。众所周知&#xff0c;Compose样式的API与原生差别不小&…

Android逆向学习(七)绕过root检测与smali修改学习

Android逆向学习&#xff08;七&#xff09;绕过root检测与smali修改学习 一、写在前面 这是吾爱破解正己大大教程的第五个作业&#xff0c;然后我的系统还是ubuntu&#xff0c; 这个是剩下作业的完成步骤。 二、任务目标 现在我们已经解决了一些问题&#xff0c;现在剩下的…