20.Python从入门到精通—参数 位置参数 关键字参数 默认参数 匿名函数 return 语句 强制位置参数
20.从入门到精通:参数 位置参数 关键字参数 默认参数 匿名函数 return 语句 强制位置参数
- 参数
- 位置参数
- 关键字参数
- 默认参数
- 匿名函数
- return 语句
- 强制位置参数
参数
在Python中,函数可以接受任意数量的参数,包括位置参数、关键字参数和默认参数。以下是这些参数类型的详细介绍:
位置参数
位置参数是最常见的参数类型,它们按照定义的顺序传递给函数。例如,下面的函数接受两个位置参数:
def add_numbers(x, y):return x + y
调用这个函数时,必须按照定义的顺序传递两个参数:
result = add_numbers(1, 2)
print(result) # 输出 3
关键字参数
关键字参数是指在调用函数时,使用参数名来指定参数的值。例如,下面的函数接受两个关键字参数:
def greet(name, greeting):print(f"{greeting}, {name}!")
调用这个函数时,可以使用参数名来指定参数的值:
greet(name="Alice", greeting="Hello") # 输出 "Hello, Alice!"
关键字参数可以使函数调用更加清晰和易于理解,尤其是在函数接受多个参数时。
默认参数
默认参数是指在定义函数时,为参数指定一个默认值。如果调用函数时没有为这个参数传递值,则使用默认值。例如,下面的函数接受一个默认参数:
def greet(name, greeting="Hello"):print(f"{greeting}, {name}!")
调用这个函数时,可以只传递一个参数,而使用默认值来填充另一个参数:
greet("Alice") # 输出 "Hello, Alice!"
greet("Bob", "Hi") # 输出 "Hi, Bob!"
默认参数可以使函数调用更加简洁和易于使用,尤其是在函数的某些参数经常使用相同的值时。
以上是Python中函数参数的基本介绍,掌握函数参数的使用方法可以使我们编写更加灵活和高效的代码。
匿名函数
在 Python 中,匿名函数又称为 lambda 函数,是一种简单的函数定义方式,可以在一行代码中定义函数。lambda 函数的语法如下:
lambda arguments: expression
其中,arguments 是函数的参数列表,用逗号分隔;expression 是函数的返回值表达式。
下面是一个简单的 lambda 函数示例:
f = lambda x, y: x + y
print(f(1, 2)) # 输出 3
- 在这个例子中,我们使用 lambda 函数定义了一个函数 f,它接受两个参数 x 和 y,并返回它们的和。我们将 lambda 函数赋值给变量 f,然后调用 f 函数并传递参数 1 和 2,输出结果为 3。
- lambda 函数通常用于需要定义简单函数的场合,例如在函数中需要传递一个函数作为参数。
下面是一个使用 lambda 函数作为参数的示例:
numbers = [1, 2, 3, 4, 5]
squares = map(lambda x: x ** 2, numbers)
print(list(squares)) # 输出 [1, 4, 9, 16, 25]
在这个例子中,我们使用 map() 函数将列表 numbers 中的每个元素求平方,使用 lambda 函数 lambda x: x **
2 定义了一个简单的平方函数。map() 函数将 lambda 函数作为第一个参数,将列表 numbers
作为第二个参数,并返回一个可迭代对象,我们使用 list() 函数将其转换为列表并输出结果。
需要注意的是,lambda 函数通常用于定义简单的函数逻辑,如果函数逻辑比较复杂,建议使用普通函数来定义。
return 语句
在Python中,return语句用于从函数中返回一个值,并结束函数的执行。以下是一个示例,展示如何使用return语句从函数中返回一个值:
def add_numbers(x, y):result = x + yreturn resultsum = add_numbers(1, 2)
print(sum) # 输出 3
在这个示例中,我们定义了一个名为add_numbers()的函数,它接受两个参数x和y,并计算它们的和。在函数内部,我们使用return语句返回计算结果result。在调用函数时,我们将返回的值赋给变量sum,并使用print()函数将其打印出来。
return语句可以帮助我们在函数内部计算出结果并将其返回给调用者。这使得函数可以在不同的上下文中重复使用,从而提高代码的复用性和可维护性。
强制位置参数
在 Python 中,可以使用 * 来强制位置参数,即在函数定义时, 后面的参数必须使用位置参数传递,不能使用关键字参数传递。下面是一个示例:*
def my_func(a, b, *, c, d):print(a, b, c, d)my_func(1, 2, c=3, d=4) # 输出 1 2 3 4
my_func(1, 2, 3, 4) # 报错:TypeError: my_func() takes 2 positional arguments but 4 were given
在上面的示例中,我们定义了一个函数 my_func,它接受两个位置参数 a 和 b,以及两个强制关键字参数 c 和 d。在调用函数时,我们可以使用关键字参数传递 c 和 d,也可以使用位置参数传递 a 和 b,但是不能同时使用位置参数和关键字参数传递 c和 d,否则会报错。
需要注意的是, 后面的参数必须使用关键字参数传递,否则会报错。例如:*
my_func(1, 2, 3, d=4) # 报错:TypeError: my_func() takes 2 positional arguments but 3 positional arguments (and 1 keyword-only argument) were given
在这个示例中,我们使用位置参数传递了 c 的值,但是没有使用关键字参数传递,因此会报错。
相关文章:
20.Python从入门到精通—参数 位置参数 关键字参数 默认参数 匿名函数 return 语句 强制位置参数
20.从入门到精通:参数 位置参数 关键字参数 默认参数 匿名函数 return 语句 强制位置参数 参数位置参数关键字参数默认参数 匿名函数return 语句强制位置参数 参数 在Python中,函数可以接受任意数量的参数,包括位置参数、关键字参数和默认参数。以下是这…...
Python爬虫之requests库
1、准备工作 pip install requests 2、实例 urllib库中的urlopen方法实际上就是以GET方式请求网页,requests库中相应的方法就是get方法。 import requestsr requests.get(https://www.baidu.com/) print(type(r)) # <class requests.models.Response> 响…...
鱼塘钓鱼(多路归并)
有 N 个鱼塘排成一排,每个鱼塘中有一定数量的鱼,例如:N5 时,如下表: 鱼塘编号12345第1分钟能钓到的鱼的数量 (1…1000)101420169每钓鱼1分钟钓鱼数的减少量(1…100)24653当前鱼塘到…...
java每日一题——买啤酒(递归经典问题)
前言: 非常喜欢的一道题,经典中的经典。打好基础,daydayup!!!啤酒问题:一瓶啤酒2元,4个盖子可以换一瓶,2个空瓶可以换一瓶,请问10元可以喝几瓶 题目如下: 啤酒问题:一瓶…...
最近接到一个大项目,给公司设计抢商品代金劵业务
我们公司是做汽车金融方面的工作,在业内还挺大。目前单量来源于2,3线城市,随着大环境越老越差位了吸引他们, 公司决定给全国的客户,销售等发一些商品 1.总体学习了京东开源秒杀系统设计思路和方案。 我们公司决定进行…...
防火墙(讲解)
目录 1.防火墙是什么? 2.防火墙设备 3.防火墙功能 1)出色的控制能力,过滤掉不安全服务 2)过滤非法用户和访问特殊站点 3)它能够对网络存取和访问进行监控审计 4.防火墙的局限 (1)防火墙有可能是可以绕过的 (2)防火墙不能防止内部出卖性攻击或者内部误操作…...
Python之装饰器-带参装饰器
Python之装饰器-带参装饰器 带参装饰器 之后不是一个单独的标识符,是一个函数调用函数调用的返回值又是一个函数,此函数是一个无参装饰器带参装饰器,可以有任意个参数 func()func(1)func(1, 2) def add(x, y):"""函数说明&…...
抖音IP属地怎么更改
抖音是一个非常受欢迎的短视频平台,吸引了无数用户在上面分享自己的生活和才艺。然而,随着快手的火爆,一些用户开始担心自己的IP地址会被他人获取,引起个人隐私风险。那么,抖音用户又该如何更改到别的地方呢࿱…...
Flutter 全局控制底部导航栏和自定义导航栏的方法
1. 介绍 导航栏在移动应用中扮演着至关重要的角色,它是用户与应用之间进行导航和交互的核心组件之一。无论是简单的页面切换,还是复杂的应用导航,导航栏都能够帮助用户快速找到所需内容,提升用户体验和应用的易用性。 在移动应用…...
检索增强生成(RAG)技术:实现流程、作用及应用案例
一. RAG简介 在自然语言处理(NLP)领域中,检索增强生成(Retrieval-Augmented Generation, RAG)技术巧妙地结合了信息检索与神经网络生成模型的力量,通过在生成过程中引入相关的外部信息,实现了在…...
Ubuntu安装和使用
Ubuntu 安装和配置 修改下载源 打开软件与更新, 选择其它站点, 选择中国, 选择阿里云源 谷歌中文输入法配置 Ctrl Alt T打开终端, 执行下述命令下fcitx框架 输入密码进行安装 sudo apt-get install -y fcitx-googlepinyinWin呼出菜单, 选择语言支持, 第一次打开会显示语言…...
【Unity】Stream最好用的Selfhost开源轻量服务
【背景】 有好几种场景的投屏或者远控应用希望实现,无论用哪种方式,都绕不开如何构建服务这一关。 【分析】 外网有很多直接付费使用的信令传输类型或是提供流服务的服务器,但我的目标场景是断绝外网的局域网,而且付费也总觉得…...
Web 常见的攻击方式有哪些?
常见的 Web 攻击方式有以下几种: 跨站脚本攻击(XSS 攻击) 跨站请求伪造(XSRF 攻击) SQL 注入 XSS 攻击 MDN 定义如下: 跨站脚本攻击(Cross-site scripting,XSS)是一…...
Rancher(v2.6.3)——Rancher部署Redis(单机版)
Rancher部署Redis详细说明文档]:https://gitee.com/WilliamWangmy/snail-knowledge/blob/master/Rancher/Rancher%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3.md#6rancher%E9%83%A8%E7%BD%B2redis ps:如果觉得作者写的还行,能够满足您的需求&#…...
stm32-模拟数字转化器ADC
接线图: #include "stm32f10x.h" // Device header//1: 开启RCC时钟,包括ADC和GPIO的时钟//2:配置GPIO将GPIO配置为模拟输入模式//3:配置多路开关将左边的通道接入到规则组中//4:配置ADC转…...
[Repo Git] manifests的写法
manifests是个啥 在Repo中manifests描述了Repo客户端的结构,也就是可以从manifests中知道各个模块的代码应该从代码管理仓库当中哪个位置去获取。 manifests的基本结构是一个Git存储库,在顶层目录中持有一个default.xml文件。 由于m…...
位置编码与长度外推
位置编码 位置编码从前到后包括:绝对位置编码、余弦位置编码、旋转位置编码、ALiBi相对位置编码。 1 绝对位置编码(Absolute Positional Encoding) 应用的模型:BERT、GPT等Transformer基础模型广泛使用绝对位置编码来处理序列数据。 算法思想:绝对位置编码通过为序列中的…...
Linux信号补充——信号发送和保存
三、信号的发送与保存 3.1信号的发送 必须有操作系统来保存信号,因为他是管理者; 信号给进程的task_struct发送信号,在task_struct中维护了一个整数signal有0-31位,共32个bit位;对于信号的管理使用的是位图结…...
Vue3 中应该使用 Ref 还是 Reactive?
一、引言 在Vue 3中,构建响应式数据结构是构建用户界面和交互体验的核心部分。而在创建这些响应式数据时,我们有两个主要工具:reactive和ref。选择使用哪一个,实际上取决于你的数据结构和访问需求。 reactive主要用于处理复杂的数…...
红外相机和RGB相机标定:实现两种模态数据融合
1. 前期准备 RGB相机:森云智能SG2-IMX390,1个红外相机:艾睿光电IR-Pilot 640X-32G,1个红外标定板:https://item.taobao.com/item.htm?_ujp3fdd12b99&id644506141871&spma1z09.2.0.0.5f822e8dKrxxYI 2.操作步…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
