当前位置: 首页 > 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_…...

Godot解包工具完整指南:3分钟提取游戏资源

Godot解包工具完整指南&#xff1a;3分钟提取游戏资源 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker godot-unpacker 是一个专为Godot游戏引擎设计的资源解包工具&#xff0c;能够快速提取非加密的…...

你的代码为什么跑不满GPU?从Cache命中率和指令集角度拆解Roofline下的性能损失

你的代码为什么跑不满GPU&#xff1f;从Cache命中率和指令集角度拆解Roofline下的性能损失 当你在AI训练或高性能计算任务中发现程序性能远低于GPU的理论峰值时&#xff0c;Roofline模型往往能直观揭示问题所在——但真正的挑战在于&#xff0c;如何从那些落在屋顶线之下的数据…...

ComfyUI节点化工作流高效应用全流程指南:从基础搭建到创意实现

ComfyUI节点化工作流高效应用全流程指南&#xff1a;从基础搭建到创意实现 【免费下载链接】ComfyUI The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface. 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI 当…...

源码阅读的艺术:开源项目入门者的渐进式指南

文章目录 每日一句正能量前言一、为什么读源码是开源入门的必修课二、准备工作&#xff1a;建立项目的"认知地图"2.1 三层结构分析法2.2 依赖关系可视化 三、第一层阅读&#xff1a;从"使用"到"入口"3.1 追踪一个完整请求3.2 绘制"调用链&q…...

GPEN GPU利用率优化实践:批处理100张老照片的显存与耗时实测

GPEN GPU利用率优化实践&#xff1a;批处理100张老照片的显存与耗时实测 1. 引言&#xff1a;当AI修复老照片遇上效率瓶颈 最近在整理家里的老相册&#xff0c;想把那些模糊的童年照片都修复一下。用GPEN一张张处理虽然效果惊艳&#xff0c;但手动上传、等待、保存&#xff0…...

新手程序员必看:7类常见错误与高效解决方案

1. 新手程序员常犯的7类错误及解决方案作为一名带过5届应届生的技术导师&#xff0c;我发现每一批新人都会重复踩同样的坑。最近带的这位应届生让我想起了自己刚入行时的样子——充满热情但缺乏方法。下面这些经验教训&#xff0c;都是我亲自踩过坑后总结出来的实战心得。提示&…...

bert-base-chinese语义增强实践:结合同义词替换提升模型鲁棒性教程

bert-base-chinese语义增强实践&#xff1a;结合同义词替换提升模型鲁棒性教程 你是不是遇到过这样的情况&#xff1a;精心训练的文本分类模型&#xff0c;面对用户输入时&#xff0c;只要对方换个说法&#xff0c;哪怕意思完全一样&#xff0c;模型就可能给出错误的判断&…...

NPM -v报错Error: Cannot find module ‘./cli/validate-engines.js‘

问题描述 C:\Users\Administrator>npm -v Error: Cannot find module ./cli/validate-engines.js Require stack: - C:\Users\Administrator\AppData\Roaming\npm\node_modules\npm\lib\cli.js - C:\Users\Administrator\AppData\Roaming\npm\node_modules\npm\bin\npm-cli…...

YOLO进化史:除了网络结构,那些改变游戏规则的‘小技巧’(Mish、CIoU、Mosaic)

YOLO进化史&#xff1a;那些改变游戏规则的"微创新"与底层设计哲学 在目标检测领域&#xff0c;YOLO系列算法以其独特的单阶段检测框架和实时性能&#xff0c;持续引领着技术发展方向。当我们聚焦于YOLO的演进历程&#xff0c;会发现真正推动性能突破的往往不是网络结…...

避坑指南:OpenClaw接入百川2-13B-4bits量化模型常见报错大全

避坑指南&#xff1a;OpenClaw接入百川2-13B-4bits量化模型常见报错大全 1. 为什么选择百川2-13B-4bits量化模型 去年我在搭建个人知识管理自动化系统时&#xff0c;第一次尝试将OpenClaw接入本地部署的大模型。当时显存只有12GB的RTX 3060让我在模型选择上捉襟见肘&#xff…...