函数进阶—python

news2024/9/20 13:15:39

一、函数如何返回多个返回值

如果想让一个函数有多个返回值,该怎么办?

返回多个数据,按照返回值的顺序,用对应顺序的多个变量接收即可,变量之间用逗号隔开,支持不同类型的数据return,如下列代码所示:

#加菲猫的食谱
def Garfield_menu():
    return '千层面','披萨'
#变量a,b接收加菲猫爱吃的食物
a,b=Garfield_menu()
print(a)
print(b)

输出:

千层面
披萨

二、函数多种传参方式

2.1位置参数

调用函数时,根据函数定义的参数位置来传递参数,传递的参数和定义的参数,顺序及个数必须一致,如下所示:

#定义函数
def user_info(name,gender):
    print(f"尊敬的{name}{gender},欢迎光临维多披萨店!")
#调用函数  
user_info('加菲猫','先生')

输出:

尊敬的加菲猫先生,欢迎光临维多披萨店!

2.2关键字参数

调用函数时,通过“键=值”形式传递参数。

作用: 让函数更加清晰、容易使用,无需关注参数的顺序需求。

如果按照位置参数进行传参,容易混淆顺序:

#定义函数
def user_info(name,gender,age,food):
    print(f"{name}{gender}今年{age}岁了,最爱吃{food}!")
#调用函数
user_info('加菲猫','先生','3','千层面')
user_info('美羊羊','女士','青草蛋糕','5')

输出:

加菲猫先生今年3岁了,最爱吃千层面!
美羊羊女士今年青草蛋糕岁了,最爱吃6!

按照关键字参数进行传参,“键=值”之间所属关系清晰明了:

#定义函数
def user_info(name,gender,age,food):
    print(f"{name}{gender}今年{age}岁了,最爱吃{food}!")
#调用函数
user_info(name='加菲猫',gender='先生',age='3',food='千层面')
user_info(name='美羊羊',gender='女士',food='青草蛋糕',age='6')

输出:

加菲猫先生今年3岁了,最爱吃千层面!
美羊羊女士今年6岁了,最爱吃青草蛋糕!

注意:调用函数时,如果有位置参数,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序。

位置参数与关键字参数混合——例1:

#定义函数
def user_info(name,gender,age,food):
    print(f"{name}{gender}今年{age}岁了,最爱吃{food}!")
#调用函数
user_info('加菲猫',gender='先生',age='3',food='千层面')

输出:

加菲猫先生今年3岁了,最爱吃千层面!

位置参数与关键字参数混合——例2:

#定义函数
def user_info(name,gender,age,food):
    print(f"{name}{gender}今年{age}岁了,最爱吃{food}!")
#调用函数
user_info('加菲猫','先生',age='3',food='千层面')

输出:

加菲猫先生今年3岁了,最爱吃千层面!

位置参数与关键字参数混合——例3:

#定义函数
def user_info(name,gender,age,food):
    print(f"{name}{gender}今年{age}岁了,最爱吃{food}!")
#调用函数
user_info(name='加菲猫','先生',age='3',food='千层面')

位置参数在关键字后面,运行报错:

2.3缺省参数

缺省参数也叫默认参数,用于定义函数时为参数提供默认值,调用函数时可不传该默认参数的值。(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)

 作用:函数调用时,如果没有传递参数,就会使用(定义函数时提供的)默认值;如果传递了参数,就会使用传递的值。

case1:没有传递参数,使用(定义函数时提供的)默认值。

#定义函数
def user_info(name,gender,age,food='千层面'):#默认加菲猫爱吃千层面
    print(f"{name}{gender}今年{age}岁了,最爱吃{food}!")
#调用函数
user_info(name='加菲猫',gender='先生',age='3')#未传递food参数,使用默认值

输出:

加菲猫先生今年3岁了,最爱吃千层面!

case2:传递了参数,使用传递的值。

#定义函数
def user_info(name,gender,age,food='千层面'):#默认加菲猫爱吃千层面
    print(f"{name}{gender}今年{age}岁了,最爱吃{food}!")
#调用函数
user_info(name='加菲猫',gender='先生',age='3',food='披萨')#传递了food参数,使用传递值

输出:

加菲猫先生今年3岁了,最爱吃披萨!

case3:多个默认值。

#定义函数
def user_info(name,gender='先生',age='3',food='披萨'):
    print(f"{name}{gender}今年{age}岁了,最爱吃{food}!")
#调用函数
user_info(name='加菲猫')

输出:

加菲猫先生今年3岁了,最爱吃披萨!

case4:默认参数出现在位置参数前面,运行报错。

#定义函数
def user_info(name,gender='先生',age,food):
    print(f"{name}{gender}今年{age}岁了,最爱吃{food}!")
#调用函数
user_info(name='加菲猫',gender='先生',age='3',food='披萨')

运行报错:

注意:所有位置参数必须出现在默认参数前面!

2.4不定长参数

不定长参数也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。

作用: 当调用函数不确定传入参数个数时, 可以使用不定长参数。

不定长参数的类型主要包括位置传递和关键字传递。

2.4.1位置传递

位置不定长传递以*号标记一个形式参数,以元组的形式接收参数,形式参数一般命名为args。

请先看代码示例:

#定义函数
def func1(*args):
    print(type(args))
    print(args)
#调用函数
func1('喜羊羊','美羊羊','懒羊羊','软绵绵','红太狼','灰太狼')

输出:

<class 'tuple'>

('喜羊羊', '美羊羊', '懒羊羊', '软绵绵', '红太狼', '灰太狼')

传入的所有参数都会被args变量收集,它会根据传入参数的位置合并为一个元组(tuple),即args是一个元组,这就是位置传递。

2.4.2关键字传递

关键字不定长传递以**号标记一个形式参数,以字典的形式接收参数,形式参数一般命名为kwargs。

请先看代码示例:

#定义函数
def func1(**kwargs):
    print(type(kwargs))
    print(kwargs)
#调用函数
func1(加菲猫='披萨',欧迪='蛋糕')

输出:

<class 'dict'>
{'加菲猫': '披萨', '欧迪': '蛋糕'}

传入的所有参数皆为键值对形式(“键=值”),所有的“键=值”都会被kwargs接收, kwargs本质是一个字典。

三、匿名函数

3.1函数作为参数传递

在前面的函数学习中,传入的参数形式都是数据,包括: 数字、字符串、字典、列表、元组等。 实际上函数本身,也可以作为参数传入另一个函数内,如下图所示:

3.2 lambda匿名函数

通过lambda关键字,可以创建一个仅能使用一次的匿名函数。

语法:lambda  传入参数:函数体(只能写一行代码)

代码示例如下:

#定义函数func2,接受其他函数传入
def func2(add):
    ret=add(1,2)
    print(ret)
#通过lambda匿名函数的形式,将匿名函数作为参数传入
func2(lambda x,y:x+y)

输出:

3

在函数的定义中:

  • def关键字,可以定义带有名称的函数,基于名称可以重复使用。
  • lambda关键字,可以定义匿名函数(无名称), 无名称的匿名函数,只能临时使用一次。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2058173.html

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

相关文章

GATK SampleList接口介绍

在 GATK 中&#xff0c;SampleList 是一个接口&#xff0c;用于表示一个样本列表。这些样本通常是在基因组分析过程中被处理的不同生物样本。SampleList 接口提供了访问这些样本的一些基本方法&#xff0c;通常用于多样本分析任务&#xff0c;比如变异检测或基因组重测序。 Sa…

入门request请求库使用

基础条件 想要入门request 打开pycharm的终端查看是否在虚拟环境下 在路径前面是否有&#xff08;venv&#xff09; 如果没有需要先配置虚拟环境 然后在终端中输入 pip install request 等待下载完成后就在我们的项目中导入 基本用法 1.发送GET请求 import requestsurl…

【C#】去掉字符串中的第一或最后一位

要去掉字符串中的第一或最后一位&#xff0c;可以使用以下几种方法&#xff1a; 1. 去掉第一位 如果想去除字符串的第一位&#xff0c;同样可以使用 Substring 方法。 1.1 使用 Substring 方法 string str "8,"; if (str.Length > 0) {str str.Substring(1)…

如何利用AI创作高质量的文章

讯飞星火 利用AI创作高质量的文章需要遵循以下步骤&#xff1a; 确定主题和目标受众&#xff1a;在开始写作之前&#xff0c;明确文章的主题和目标受众。这将帮助你确定文章的风格、结构和内容。 收集资料和信息&#xff1a;在撰写文章之前&#xff0c;进行充分的研究&#x…

推荐一款基于Spring Boot + VUE 框架开发的分布式文件管理系统,功能齐全、实用便捷(附源码)

前言 在数字化时代&#xff0c;文件管理是企业和个人用户的基本需求。然而&#xff0c;现有的文件管理系统往往存在一些痛点&#xff0c;如存储空间有限、文件共享困难、缺乏在线编辑功能、移动端适配性差等。这些问题限制了用户在不同设备和场景下的文件处理能力。 为了解-决…

利用开源项目加速AI+绘画设计与AI+视频生成的商业化进程

随着生成式人工智能技术的发展,越来越多的工具被开发出来,用于辅助创意工作者创作出令人惊叹的作品。本文将介绍两个开源项目——一个专注于将ComfyUI工作流转换为商业化的移动应用和网页,另一个则聚焦于利用AI技术简化视频创作过程。这两个项目不仅为创作者提供了强大的工具…

【Linux】2.Linux常见指令以及权限理解(1)

文章目录 1.Xshell的一些快捷键操作2.Linux指令2.1常用指令示例2.2常用指令选项2.2.1 ls指令2.2.2 cd/pwd/shoami指令2.2.3 touch指令2.2.4 mkdir指令2.2.5 rmdir指令2.2.6 rm指令 1.Xshell的一些快捷键操作 Xshell&#xff1a; altenter&#xff1a;Xshell自动全屏&#xff0c…

远程在线诊疗小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;医生管理&#xff0c;科室信息管理&#xff0c;科室类型管理&#xff0c;患者信息管理&#xff0c;通知公告管理&#xff0c;医院介绍&#xff0c;系统管理 微信端账号功能包括&a…

【吊打面试官系列-Memcached面试题】memcached 如何处理容错的?

大家好&#xff0c;我是锋哥。今天分享关于 【memcached 如何实现冗余机制&#xff1f; 】面试题&#xff0c;希望对大家有帮助&#xff1b; memcached 如何实现冗余机制&#xff1f; 不处理&#xff01; 在 memcached 节点失效的情况下&#xff0c;集群没有必要做任何容错处理…

机器人测试自动化智能化交流沙龙 —— 免费参与,线上线下同步进行,探索未来科技新篇章!

在这个科技日新月异的时代&#xff0c;机器人技术正以前所未有的速度推动着各行各业的变革。而在这场变革中&#xff0c;如何确保机器人系统的稳定性、可靠性及高效性&#xff0c;成为了每一个从业者必须面对的重要课题。为此&#xff0c;我们特地在成都这座充满活力的城市&…

ok,boomer xss的dom破坏

一、首先什么是dom破坏 在HTML中&#xff0c;如果使用一些特定的属性名&#xff08;id、name&#xff09;给DOM元素命名&#xff0c;这些属性会在全局作用域中创建同名的全局变量&#xff0c;指向对应的DOM元素。这种行为虽然有时可以方便地访问元素&#xff0c;但也会引发一些…

【Linux】Linux环境基础开发工具使用之Linux调试器-gdb使用

目录 一、程序发布模式1.1 debug模式1.2 release模式 二、默认发布模式三、gdb的使用结尾 一、程序发布模式 程序的发布方式有两种&#xff0c;debug模式和release模式 1.1 debug模式 目的&#xff1a;主要用于开发和测试阶段&#xff0c;目的是让开发者能够更容易地调试和跟…

【Go】实现字符切片零拷贝开销转为字符串

package mainimport ("fmt""unsafe" )func main() {bytes : []byte("hello world")s : *(*string)(unsafe.Pointer(&bytes))fmt.Println(s)bytes[0] Hfmt.Println(s) }slice的底层结构是底层数组、len字段、cap字段。string的底层结构是底层…

第1章-04-Chrome及Chrome Driver安装及测试

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年CSDN全站百大博主。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&am…

MYSQL定时任务使用手册

开发和管理数据库时&#xff0c;经常需要定时执行某些任务&#xff0c;比如每天备份数据库、每周统计报表等。MySQL提供了一个非常有用的工具&#xff0c;即事件调度器&#xff08;Event Scheduler&#xff09;&#xff0c;可以帮助我们实现定时任务调度的功能。本文将介绍如何…

Excel中的“块”操作

在Excel中&#xff0c;有offset、index、indirect三个对“区域”操作的函数&#xff0c;是较高版本Excel中“块”操作的利器。 (笔记模板由python脚本于2024年08月20日 19:25:21创建&#xff0c;本篇笔记适合喜欢用Excel处理数据的coder翻阅) 【学习的细节是欢悦的历程】 Pytho…

46、Python之模块和包:一切皆对象,模块和包也不例外

引言 在前面的文章中&#xff0c;我们介绍了变量、函数、类&#xff0c;在实际编程中&#xff0c;始终在贯彻的有两点&#xff1a; 1、在Python中一切皆对象&#xff0c;所以函数、类、模块、包也都是一等公民。 2、不管是基于面向过程还是面向对象&#xff0c;我们在实际编…

使用Element UI组件时,icon图标不显示

问题描述&#xff1a; 我在使用Element UI组件的日期选择器时&#xff0c;发现图标不显示(左边是原图&#xff0c;右边的问题图)。 经过检查我发现&#xff0c;我的JS&#xff0c;CSS文件都没有问题&#xff0c;只是缺少了element-icons.tff和element-icons.woff这两个文件。 …

JSON, YAML, XML, CSV交互可视化

1、jsoncrack https://jsoncrack.com/editor

O2OA(翱途)服务器配置与管理-如何修改服务器内存占用率?

o2server 启动后一般占用大约4G~6G内存空间,在启动脚本中默认设置 -Xms2g 限定heap(堆)的大小最小2G,可以通过设置-Xmx来设置堆的上限. Xms -Xms2g:设置JVM初始堆内存为2g.此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存. Xmx -Xmx5g:设置JVM最大堆内存为5g.…