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 需求分析 某知名的在线旅游平台,在即将到来的春季促销活动之前ÿ…...
Flutter Xcode 16+ iOS 18.1 使用image_pickers无法弹出选择图片的视图问题
解决 Flutter Xcode 16 使用 image_pickers 无法弹出选择图片视图的问题 在开发 Flutter 应用时,图片选择功能是常见的需求之一。image_pickers 库因其便捷性和功能丰富性,成为了许多开发者的选择。然而,随着 Xcode 版本的不断更新ÿ…...
socket网络编程-TC/IP方式
网络编程 1.概念:两台设备之间通过网络数据传输。 2.网络通信:将数据通过网络从一台设备传输另外一台设备。 3.java.net包下提供了一系列的类和接口,提供程序员使用,完成网络通信。 TCP和UDP TCP协议: 1.使用TCP协…...
《分布式光纤测温:解锁楼宇安全的 “高精度密码”》
在楼宇建筑中,因其内部空间庞大,各类电器设施众多,如何以一种既高效又稳定,兼具低成本与高覆盖特性的方式,为那些关键线路节点开展温度监测,是目前在安全监测领域一项重点研究项目,而无锡布里渊…...
C语言基本知识复习浓缩版:数组
所谓数组(Array),就是一系列数据的集合。这些数据具有相同的类型,并且在内存中挨着存放,彼此之间没有缝隙。换句话说,数组用来存放多份数据,但是它有两个要求: 这些数据的类型必须相…...
Python贪心
贪心 贪心:把整体问题分解成多个步骤,在每个步骤都选取当前步骤的最优方案,直至所有步骤结束;每个步骤不会影响后续步骤核心性质:每次采用局部最优,最终结果就是全局最优如果题目满足上述核心性质…...
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
官方文档:互动消息Web端集成方法_视频直播(LIVE)-阿里云帮助中心 以下是代码实现: <!-- 引入阿里云互动文件 --> <script src"https://g.alicdn.com/code/lib/jquery/3.7.1/jquery.min.js"></script> <script src&quo…...
解锁无证身份核验:开启便捷安全新征程
在当今快速发展的数字化时代,身份核验作为确保信息安全与交易诚信的基石,正经历着前所未有的变革。传统的身份核验方式,如携带身份证件进行现场验证,虽在一定程度上保障了安全,却也带来了诸多不便。随着科技的进步&…...
[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中的微调是什么? 答案:虽然预训练语言模型非常强大,但它们并不是任何特定任务的专家。它们可能对语言有惊人的理解能力,但仍需要一些LLMs微调过程,开发者通过这个过程提升它…...
RuoYi Cloud项目解读【四、项目配置与启动】
四、项目配置与启动 当上面环境全部准备好之后,接下来就是项目配置。需要将项目相关配置修改成当前相关环境。 1 后端配置 1.1 数据库 创建数据库ry-cloud并导入数据脚本ry_2024xxxx.sql(必须),quartz.sql(可选&…...
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划分为更小的芯片,使得每个部分都能采用不同…...
Java SpringBoot + Vue + Uniapp 集成JustAuth 最快实现多端三方登录!(QQ登录、微信登录、支付宝登录……)
注:本文基于 若依 集成just-auth实现第三方授权登录 修改完善,所有步骤仅代表本人如下环境亲测可用,其他环境需自辩或联系查看原因! 系统环境 运行系统:Windows10专业版、Linux Centos7.6 Java 版本:1.8.0_…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...
