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

python特殊参数

一、默认值参数和关键字参数

1.默认值参数

  • 形参设定默认值 称为 默认参数。调用函数时,可以使用比定义时更少的参数。
  • 调用函数时,如果没有传入默认参数对应的实参,则实参使用默认值
  • 默认参数在调用的时候可以不传递,也可以传递
def say_hello(name='林青霞'):# 形参"""给女神打招呼:param name::return:"""print('hello ', name)# 调用时不传递参数,使用默认值
say_hello()
# 调用时传递参数
say_hello('高圆圆')

注意:默认参数一定要在参数的最后

def say_hello(score, name='林青霞'):# 默认参数放在参数最后面"""给女神打招呼:param name::return:"""print('hello %s'%(name))say_hello(60, '高圆圆')

2.关键字参数

  • 调用函数时,实参可以指定对应的形参,称为 关键字参数
def say_hello(name, age, score):print('姓名:%s,年纪:%d,分数:%f'%(name,age,score))say_hello(name='林青霞',age=60,score=70.5)
  • 使用关键字参数调用可以改变传递参数的顺序
# 改变参数传递的顺序
say_hello(score=70,age=30,name='高圆圆')

 二、可变参数

1. 可变参数args

可变参数需要添加*,用于接收任意数量的参数

这里的args代指arguments,可以写其他任意名称

def sum(*args):# 形参能够接收任意个长度的数据pass# 调用可变参数的函数
sum(10,20,30)
sum(10,20,30,40)

可变参数的本质是 将传递的参数包装成了元组

实现多个参数的sum函数

def sum(name, *args):# 形参能够接收任意个长度的数据 args为元组类型result = 0for ele in args:result += elereturn result

还有其他参数时,*args要放最后

2. 可变参数kwargs

可变参数还有一种形式 可以接收不存在的关键字参数

定义参数时需要在变量名前添加两个*,这里的kwargs代指keywords,可以写其他任意名称

def func(**kwargs):# kwargs 接收不存在的关键字参数pass# 调用不存在的关键字参数函数
func(name = '张三', age = 30, score = 70)

不存在的关键字参数包装成字典

def func(a,**kwargs):# kwargs 接收不存在的关键字参数 kwargs为字典类型name = kwargs['name']age = kwargs['age']# 调用不存在的关键字参数函数
func(name = '张三',age = 30,a=10,score=70)

3. 传递元组/列表给可变参数args

可以传递元组、列表给可变参数args,需要在元组/列表前加上*进行解包操作

def func(*args):print(args)#(10,20,30)t = (10,20,30)
# 传递元组
func(*t)

4. 传递字典给可变参数kwargs

在字典的前面加上**的作用是将字典中的元素解包成一个一个的不存在的关键字参数传递给函数

def func(**kwargs):print(kwargs)d = {'name':'张三', 'age':40}
# 传递字典给可变参数kwargs
func(**d)

5. 组合使用

**kwargs形参可以与 *args形参组合使用(*args必须在 **kwargs前面), *args形参接收一个元组。

例如,定义如下函数:

def milk_tea_shop(kind, *arguments, **keywords):print("-- 老板,给我来杯", kind, "!")print("-- 对不起,我们的 %s 已经卖完啦!" % kind)for arg in arguments:print(arg)print("-" * 40)for kw in keywords:print(kw, ":", keywords[kw])

则可使用如下方式调用:

milk_tea_shop("QQ咩咩好喝到爆的咩噗茶","加糖", "少冰", "加奶", "加珍珠",price="10元", address="北京市朝阳区望京SOHO",phone="010-12345678"
)

输出如下:

-- 老板,给我来杯 QQ咩咩好喝到爆的咩噗茶 !
-- 对不起,我们的 QQ咩咩好喝到爆的咩噗茶 已经卖完啦!
加糖
少冰
加奶
加珍珠
----------------------------------------
price : 10元
address : 北京市朝阳区望京SOHO
phone : 010-12345678

三、递归函数

1. 递归简介

递归指的是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解

如果 一个函数在内部调用其本身,这个函数就是 递归函数

递归的好处是:只需少量的程序就可描述出解题过程所需要的多次重复计算

我们先来看看生活中递归的场景:

从前有座山,山里有个庙,庙里有个老和尚,给小和尚讲故事。故事讲的是:
从前有座山,山里有个庙,庙里有个老和尚,给小和尚讲故事。故事讲的是:
从前有座山,山里有个庙,庙里有个老和尚,给小和尚讲故事。故事讲的是:
从前有座山,山里有个庙,庙里有个老和尚,给小和尚讲故事…

2. 递归求阶乘

递归最经典的案例是求n的阶乘

5的阶乘:5*4*3*2*1

def func(n):'''求n的阶乘:param n: 需要求的阶乘:return: n的阶乘'''if n==1:return 1else:return n*func(n-1)

分析:

如果传递的是1,则1的阶乘为1

如果传递的是大于1的数,n的阶乘就等于n乘以n-1的阶乘

相关文章:

python特殊参数

一、默认值参数和关键字参数 1.默认值参数 形参设定默认值 称为 默认参数。调用函数时,可以使用比定义时更少的参数。调用函数时,如果没有传入默认参数对应的实参,则实参使用默认值默认参数在调用的时候可以不传递,也可以传递 …...

Ubuntu系统Qt的下载、安装及入门使用,图文详细,内容全面

文章目录 说明1 在线安装2 离线安装3 使用Qt Creator创建Qt应用程序并构建运行补充补充一:注册Qt账号 说明 本文讲解Ubuntu系统下安装Qt,包括在线安装和离线安装两种方式,内容充实细致,话多但是没有多余(不要嫌我啰嗦…...

elasticsearch集群部署

一、创建 elasticsearch-cluster 文件夹 创建 elasticsearch-7.6.2-cluster文件夹 修改服务es服务文件夹为node-001 修改config/elasticsearch.yml 配置文件 # Elasticsearch Configuration # # NOTE: Elasticsearch comes with reasonable defaults for most settings. # …...

初学stm32 --- DAC模数转换器工作原理

目录 什么是DAC? DAC的特性参数 STM32各系列DAC的主要特性 DAC框图简介(F1/F4/F7) 参考电压/模拟部分电压 触发源 关闭触发时(TEN0)的转换时序图 DMA请求 DAC输出电压 什么是DAC? DAC,全称:Digital…...

保证Mysql数据库到ES的数据一致性的解决方案

文章目录 1.业务场景介绍1.1 需求分析1.2 技术实现方案 2.业界常用数据一致性方案分析2.1 同步双写方案2.2 MQ异步双写方案2.3 扫表定期同步方案2.4 监听binlog同步方案 1.业务场景介绍 1.1 需求分析 某知名的在线旅游平台,在即将到来的春季促销活动之前&#xff…...

Flutter Xcode 16+ iOS 18.1 使用image_pickers无法弹出选择图片的视图问题

解决 Flutter Xcode 16 使用 image_pickers 无法弹出选择图片视图的问题 在开发 Flutter 应用时,图片选择功能是常见的需求之一。image_pickers 库因其便捷性和功能丰富性,成为了许多开发者的选择。然而,随着 Xcode 版本的不断更新&#xff…...

socket网络编程-TC/IP方式

网络编程 1.概念:两台设备之间通过网络数据传输。 2.网络通信:将数据通过网络从一台设备传输另外一台设备。 3.java.net包下提供了一系列的类和接口,提供程序员使用,完成网络通信。 TCP和UDP TCP协议: 1.使用TCP协…...

《分布式光纤测温:解锁楼宇安全的 “高精度密码”》

在楼宇建筑中,因其内部空间庞大,各类电器设施众多,如何以一种既高效又稳定,兼具低成本与高覆盖特性的方式,为那些关键线路节点开展温度监测,是目前在安全监测领域一项重点研究项目,而无锡布里渊…...

C语言基本知识复习浓缩版:数组

所谓数组(Array),就是一系列数据的集合。这些数据具有相同的类型,并且在内存中挨着存放,彼此之间没有缝隙。换句话说,数组用来存放多份数据,但是它有两个要求: 这些数据的类型必须相…...

Python贪心

贪心 贪心:把整体问题分解成多个步骤,在每个步骤都选取当前步骤的最优方案,直至所有步骤结束;每个步骤不会影响后续步骤核心性质:每次采用局部最优,最终结果就是全局最优如果题目满足上述核心性质&#xf…...

rk3568 内核态OOM内存泄漏kmemleak使用

1,配置,修改\kernel\arch\arm64\configs\rockchip_linux_defconfig,修改后查看.config. larkubuntu:~/Public/rk356x-linux/rk356x-linux/kernel$ cat .config | grep -i kmemleak CONFIG_HAVE_DEBUG_KMEMLEAKy CONFIG_DEBUG_KMEMLEAKy CONFI…...

ASP.NET Core - 日志记录系统(二)

ASP.NET Core - 日志记录系统(二) 2.4 日志提供程序2.4.1 内置日志提供程序2.4.2 源码解析 本篇接着上一篇 ASP.NET Core - 日志记录系统(一) 往下讲,所以目录不是从 1 开始的。 2.4 日志提供程序 2.4.1 内置日志提供程序 ASP.NET Core 包括…...

阿里云直播互动Web

官方文档&#xff1a;互动消息Web端集成方法_视频直播(LIVE)-阿里云帮助中心 以下是代码实现&#xff1a; <!-- 引入阿里云互动文件 --> <script src"https://g.alicdn.com/code/lib/jquery/3.7.1/jquery.min.js"></script> <script src&quo…...

解锁无证身份核验:开启便捷安全新征程

在当今快速发展的数字化时代&#xff0c;身份核验作为确保信息安全与交易诚信的基石&#xff0c;正经历着前所未有的变革。传统的身份核验方式&#xff0c;如携带身份证件进行现场验证&#xff0c;虽在一定程度上保障了安全&#xff0c;却也带来了诸多不便。随着科技的进步&…...

[DO374] Ansible 配置文件

[DO374] Ansible 配置文件 1. 配置文件位置2. 配置文件3. Ansible 配置4. Ansible的Ad-hoc5. Ansible 模块6. playbook段落7. 任务执行后续8. Ansible 变量8.1 ansible 变量的定义8.1.1 主机变量8.1.2 主机组变量 8.2 vars的循环 9. Ansible Collection10. Ansible-galaxy 安装…...

【杂谈】-50+个生成式人工智能面试问题(四)

7、生成式AI面试问题与微调相关 Q23. LLMs中的微调是什么&#xff1f; 答案&#xff1a;虽然预训练语言模型非常强大&#xff0c;但它们并不是任何特定任务的专家。它们可能对语言有惊人的理解能力&#xff0c;但仍需要一些LLMs微调过程&#xff0c;开发者通过这个过程提升它…...

RuoYi Cloud项目解读【四、项目配置与启动】

四、项目配置与启动 当上面环境全部准备好之后&#xff0c;接下来就是项目配置。需要将项目相关配置修改成当前相关环境。 1 后端配置 1.1 数据库 创建数据库ry-cloud并导入数据脚本ry_2024xxxx.sql&#xff08;必须&#xff09;&#xff0c;quartz.sql&#xff08;可选&…...

51c~Pytorch~合集5

我自己的原文哦~ https://blog.51cto.com/whaosoft/13059544 一、PyTorch DDP 正在郁闷呢 jetson nx 的torchvision安装~~ 自带就剩5g 想弄到ssd 项目中的 venv中又 cuda.h没有... 明明已经装好什么都对 算了说今天主题 啊对 还是搬运啊 学习之工具人而已 勿怪 Distrib…...

【芯片封测学习专栏 -- 什么是 Chiplet 技术】

请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 OverviewChiplet 背景UCIeChiplet 的挑战 Overview Chiplet 又称为小芯片。该技术通过将大型SoC划分为更小的芯片&#xff0c;使得每个部分都能采用不同…...

Java SpringBoot + Vue + Uniapp 集成JustAuth 最快实现多端三方登录!(QQ登录、微信登录、支付宝登录……)

注&#xff1a;本文基于 若依 集成just-auth实现第三方授权登录 修改完善&#xff0c;所有步骤仅代表本人如下环境亲测可用&#xff0c;其他环境需自辩或联系查看原因&#xff01; 系统环境 运行系统&#xff1a;Windows10专业版、Linux Centos7.6 Java 版本&#xff1a;1.8.0_…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...