python进阶函数

目录

  • 函数多返回值
  • 函数多种传参方式
  • 匿名函数

函数多返回值

问:如果一个函数如些两个return(如下所示),程序如何执行?

def return_num():
    return 1
    return 2


result = return_num()
print(result)

答:只执行了第一个return,原因是因为return可以退出当前函数,导致return下方的代码不执行

如果一个函数要有多个返回值,该如何书写代码?

def test_return():
    return 1, "hello", True

x, y, z = test_return()
print(x)
print(y)
print(z)

按照返回值的顺序,写对顺序的多个变量接受即可
变量之间用逗号隔开
支持不同类型的数据return

函数多种传参方式

函数参数种类
使用方式上的不同,函数有4种常见参数使用方式:
位置参数
关键字参数
缺省参数
不定长参数

位置参数
位置参数:调用函数时根据函数定义的参数位置来传递参数

def user_info(name, age, gender):
    print(f"姓名是:{name}, 年龄是:{age}, 性别是:{gender}")
# 位置参数 - 默认使用形式
user_info('小明', 20, '男')

注:传递的参数和定义的参数的顺序及个数必须一致

关键字参数
关键字参数:函数调用时通过 “键=值” 形式传递参数
作用:可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求

def user_info(name, age, gender):
    print(f"姓名是:{name}, 年龄是:{age}, 性别是:{gender}")

# 关键字参数
user_info(name='小王', age=11, gender='女')
user_info(age=10, gender='女', name='潇潇')    # 可以不按照参数的定义顺序传参
user_info('甜甜', gender='女', age=9)

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

缺省参数
缺省参数:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值,(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用
作用:当调用函数时没有传递参数,就会使用默认是用缺省参数对应的值

def user_info(name, age, gender='女'):
    print(f"姓名是:{name}, 年龄是:{age}, 性别是:{gender}")

user_info('小天', 13, '男')

注:函数调用时,如果为缺省参数传值则修改默认参数值,否则使用这个默认值

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

不定长参数的类型:
位置传递
关键字传递

位置传递

# 不定长 - 位置不定长, *号
# 不定长定义的形式参数会作为元组存在,接收不定长数量的参数传入
def user_info(*args):
    print(f"args参数的类型是:{type(args)},内容是:{args}")

user_info(1, 2, 3, '小明', '男孩')

注意:
传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是位置传递

关键字传递

# 不定长 - 关键字不定长, **号
def user_info(**kwargs):
    print(f"args参数的类型是:{type(kwargs)},内容是:{kwargs}")
    
user_info(name='小王', age=11, gender='男孩')

注意:
参数是”键=值“形式的下情况下,所有的”键=值“都会被kwargs接受,同时会根据”键=值“组成字典

匿名函数

函数作为参数传递
在前面的学习中,我们一直使用的函数,都是接受数据作为参数传入:
● 数字
●字符串
● 字典、列表、元组等

其实,我们学习的函数本身,也可以作为参数传入另一个函数内。

在这里插入图片描述
lambda匿名函数
函数的定义中
● def关键字,可以定义带有名称的函数
● lambda关键字,可以定义匿名函数(无名称)
有名称的函数,可以基于名称重复使用
无名称的匿名函数,只可临时使用一次

匿名函数定义语法:

lambda 传入参数:函数体(一行代码)

lambda是关键字,表示定义匿名函数
传入参数表示匿名函数的形式参数,如:x,y表示接收2个形式参数
● 函数体,就是函数的执行逻辑,要注意:只能写一行,无法多写代码

如下图代码,我们可以:
● 通过def关键字,定义一个函数,并传入,如下图:

def test_func(compute):
    result = compute(1, 2)
    print(f"结果是:{result}")
def add(x, y):
    return x + y

test_func(add)

● 也可以通过lambda关键字,传入一个一次性使用的lambda匿名函数

def test_func(compute):
    result = compute(1, 2)
    print(f"结果是:{result}")
# 通过lambda匿名函数的形式,将匿名函数作为参数传入

test_func(lambda x, y: x + y)

使用def和使用lambda,定义的函数功能完全一致,只是lambda关键字定义的函数是匿名的,无法二次使用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python学习篇】Python实验小练习——异常处理(十三)

个人名片: 🎓作者简介:嵌入式领域优质创作者🌐个人主页:妄北y 📞个人QQ:2061314755 💌个人邮箱:[mailto:2061314755qq.com] 📱个人微信:Vir2025WB…

数据同步软件有哪些

数据同步软件有哪些呢?随着企业规模的扩大,企业数据也积累得越来越多,万一发生宕机风险,那么这个损失将不可估量。所以为了容灾备用,我们往往需要将数据同步到另一台备胎服务器上,进行冗余。 那么需要同步的…

GPU配置pytorch环境(links for torch)

一、创建一个新的虚拟环境 二、激活虚拟环境 三、打开或新建一个pycharm项目,把环境选成我们刚刚新建的虚拟环境 四、从links for torch网站下载与自己cuda版本和python版本对应的torch 五、在pycharm的终端pip install 安装torch 直到显示成功安装 六、验证pytorch…

【Matlab函数分析】imread从图形文件读取图像

🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&#x1f91…

gin 服务端无法使用sse流式nginx配置

我在本地使用 gin 可以流式的将大模型数据传递给前端。但是当我部署到服务器中时,会阻塞一段时间,然后显示一大段文本。 起初我怀疑是gin 没有及时将数据刷到管道中,但是经过测试,还是会阻塞。 c.Writer.(http.Flusher).Flush()最…

HTML5的多线程技术:Web Worker API

Web Workers API 是HTML5的一项技术,它允许在浏览器后台独立于主线程运行脚本,即允许进行多线程处理。这对于执行密集型计算任务特别有用,因为它可以防止这些任务阻塞用户界面,从而保持网页的响应性和交互性。Web Workers在自己的…

CAS服务端部署

部署CAS Cas服务端其实就是一个war包。 在资源\cas\source\cas-server-4.0.0-release\cas-server-4.0.0\modules目录下cas-server-webapp-4.0.0.war 将其改名为cas.war放入tomcat目录下的webapps下。启动tomcat自动解压war包。浏览器输入 登录页面 http://localhost:8080/ca…

43 - 部门工资前三高的所有员工(高频 SQL 50 题基础版)

43 - 部门工资前三高的所有员工 # dense_rank 排名selectDepartment,Employee,Salary from(selectd.name as Department,e.name as Employee,e.salary as Salary,(dense_rank() over (partition by d.name order by e.salary desc)) as rankingfrom Employee e left join Depar…

【设计模式】行为型-状态模式

在变幻的时光中,状态如诗篇般细腻流转。 文章目录 一、可调节的灯光二、状态模式三、状态模式的核心组件四、运用状态模式五、状态模式的应用场景六、小结推荐阅读 一、可调节的灯光 场景假设:我们有一个电灯,它可以被打开和关闭。用户可以…

Nvidia jetson Orin/Nano + 智能座舱摄像头实现车载AI视觉

智能座舱系统包括DMS(Driver Monitor System)驾驶员疲劳监测系统和OMS乘员监测系统,通过在车内安装摄像头感知驾驶员和乘客的行为以及车内状况:DMS摄像头能够实现驾驶员疲劳监测、驾驶员注意力监测、危险驾驶行为监测以及驾驶员身…

【python】python基于tkinter的学生成绩管理系统(源码+数据文件)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

如何做到高级Kotlin强化实战?(一)

高级Kotlin强化实战(一) 第一章 Kotlin 入门教程1.Kotlin 入门介绍2.Kotlin 与 Java 比较 第一章 Kotlin 入门教程 1.Kotlin 入门介绍 Kotlin 概述 Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言。它主要是 JetBrains 开发团队所开发出来的编程…

打靶记录——靶机medium_socnet

靶机下载地址 https://www.vulnhub.com/entry/boredhackerblog-social-network,454/ 打靶过程 由于靶机和我的Kali都处于同一个网段,所以使用arpscan二次发现技术来识别目标主机的IP地址 arpscan -l除了192.168.174.133,其他IP都是我VMware虚拟机正…

算法力扣刷题 二十六【459.重复的子字符串】

前言 字符串篇,继续。 记录 二十六【459.重复的子字符串】 一、题目阅读 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s "abab" 输出: true 解释: 可由子串 "ab" 重复两次构成。示例…

在TkinterGUI界面显示WIFI网络(ESP32s3)摄像头画面

本实验结合了之前写过的两篇文章Python调用摄像头,实时显示视频在Tkinter界面以及ESP32 S3搭载OV2640摄像头释放热点(AP)工作模式–Arduino程序,当然如果手头有其他可以获得网络摄像头的URL即用于访问摄像头视频流的网络地址&…

浅谈Tomcat

文章目录 一、什么是Tomcat?二、Tomcat的下载安装三、使用tomcat访问资源 一、什么是Tomcat? Tomcat 就是一个 HTTP 服务器。 前面我们聊了HTTP服务器,像我们在网页输入URL,其实就是在给人家的HTTP服务器发送请求,既…

计算机网络之数据通信原理(中)

上节内容传送口:数据通信原理基础 1.数据传输方式 1.1并行传输 并行传输: 字符编码的各个比特同时传输 特点: 一个比特时间内可传输一个字符,传输速度快,每个比特传输要求一个单独的信道支持,通信成本高&#xf…

红黑树插入删除流程(流程图)

红黑树插入删除流程(流程图) 红黑树性质 左根右(二叉树)根叶黑(根节点是黑色的)不红红(不存在相邻两个红色节点)黑路同(对于每个节点,从该节点出发到任一空叶节点所经过…

收银系统源码-千呼新零售【全场景收银】

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

intellij idea中使用R语言plot画图无图像问题

1、在intellij idea中使用R语言plot函数时,会遇到各种各样的问题,会出现图片不显示问题, 可以看到,目前我电脑r语言版本为4.2.1,输入下面代码: # # 安装包 # install.packages(ggplot2) # library(ggplot2…