python函数进阶

Python进阶--函数进阶 目录1. 函数多返回值2. 函数多种传参方式(1). 位置参数(2). 关键字参数(3). 缺省参数(4). 不定长参数3. 匿名函数(1). 函数作为参数传递(2). lambda匿名函数 如果一个函数要有多个返回值,要书写在一条return语句里,中间用逗号隔开。按照返回值的顺序,写对应顺序的多个变量接收即可;支持不同类型的数据return。 2. 函数多种传参方式 (1). 位置参数 位置参数:调用函数时根据函数定义的参数位置来传递参数。 阅读详情

一、函数多返回值

Q:如果一个函数内两个return,程序如何执行?

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

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

按照返回值的顺序,写对应顺序的多个变量接收即可

变量之间用逗号隔开

支持不同类型数据return

# 演示使用多个变量 接收多个返回值

def test_return():

    return 1,'hhh',False



x, y ,z = test_return()

print(x)

print(y)

print(z)

二、函数多种传参方式

函数参数种类:

根据使用方式的不同,函数中有4种常见的参数使用方式

  • 位置参数

  • 关键字参数

  • 缺省参数

  • 不定长参数

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

注意:

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

2、关键字参数:函数调用时通过“键=值”形式传递参数

作用:可以让函数更加清晰,容易使用,同时也清除了参数的顺序需求

注意:

函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面;但是关键字 

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

作用:当调用函数时没有传递参数,就会使用默认是缺省参数对应的值

注意:

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

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

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

不定长参数的类型:

1)位置传递

注意:

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

2)关键字传递

注意:

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

# 演示多种传参的形式

def user_info(name,age,gender):

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





# 位置参数 -默认使用形式 传递的参数和定义的参数顺序及个数必须一致

user_info('piggy',24,'男')

# 关键字参数 -参数之间不存在先后顺序

user_info(name='doggy',age=23,gender='男')

user_info(age=23,name='doggy',gender='男')

user_info('bear',age=23,gender='女')

# 缺省参数(默认值)-不传就按默认值,传了就覆盖默认值 注意默认的参数必须写在最后

def user_info(name,age,gender='男'):

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

user_info('Tom',23)

# 不定长 -位置不定长 * 形参作为元组存在接收不定长数量的参数传入

def user_info(*args):

    print(f"args参数的类型是:{type(args)},内容是:{args}")

user_info(1,2,3,'nana')

# 不定长 -关键字不定长 **

def user_info(**kwargs):

    print(f"args参数的类型是:{type(kwargs)},内容是:{kwargs}")

user_info(k1=1,name='baby',k3='ew')

三、匿名函数

1、函数作为参数传递

在之前的函数学习中,我们一直使用的函数都是接收数据作为参数传入:

  • 数字

  • 字符串

  • 字典、列表、元组等

其实,函数本身也可以作为参数传入另一个函数内

如下代码

不难看出,函数compute,作为参数,传入了test_func函数中使用

  • test_func需要一个函数作为参数传入,这个函数需要接收2个数字进行计算,计算逻辑由这个被传入函数决定

  • compute函数需要接收2个数字对其进行计算,compute函数作为参数,传递给了test_func函数使用

  • 最终,在test_func函数内部,由传入的compute函数,完成对数字的计算操作

以上是一种计算逻辑的传递,而非数据的传递

任何逻辑都可以自定义并作为函数传入

# 定义一个函数,接收另一个函数作为传入参数

def test_func(compute):

    res = compute(1,2) #确定compute是函数

    print(f"compute参数的类型:{type(compute)}\n计算结果:{res}")

# 定义一个函数 准备作为参数传入另一个函数

def compute(x,y):

    return x+y

# 调用 并传入参数

test_func(compute)

2、lambda匿名函数

函数定义中

  • def关键字,可以定义带有名称的函数

  • lambda关键字,可以定义匿名函数(无名称)

有名称的函数,可以基于名称重复使用。

无名称的匿名函数,只可以临时使用一次。

匿名函数定义语法:

lambda 传入参数: 函数体(一行代码-计算逻辑 )

  • lambda是关键字,表示定义匿名函数

  • 传入参数表示匿名函数的形式参数,如x,y表示接收两个形式参数

  • 函数体,就是函数的执行逻辑,要注意:只能写一行,无法写多行代码

如下代码可以;

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

# 通过lambda匿名函数的形式,将匿名函数作为参数传入

test_func(lambda x,y:x+y) # 只能用一次,但是很简洁

为什么大语言模型推理要分成 Prefill 和 Decode?深入理解这两个阶段的真正意义 Prefill 阶段是语言模型推理中的第一个步骤,它负责处理你输入的所有上下文内容(prompt),为后续生成打下基础。“请解释一下 Transformer 的原理。这句话会被 tokenizer 编码为一串 token,比如["请", "解释", "一下", "Trans", "##former", "的", "原理", "。"]。然后这些 token 会进入 Transformer 模型进行前向传播。重点来了 👇。 阅读详情

相关推荐

RT-Thread与ROS2通信:micro-ROS在STM32上的移植实践

本文详细介绍了在STM32平台上使用RT-Thread实时操作系统移植micro-ROS实现与ROS2通信的实践方案。通过对比rosserial方案,重点阐述了micro-ROS基于XRCE-DDS协议栈在数据可靠性(丢包率低于1%)、双模式通信(UDP/串口)以及C/C++混合编程方面的优势,为嵌入式设备与ROS2的高效通信提供了完整解决方案。

emacs5lisp的博客 327

C++学习笔记(十二)

C++的第十二篇笔记,介绍了C++的构造函数。

m0_71007572的博客 531

从充电管理芯片里‘偷师’:拆解一个PMOS双向开关电路,搞定你的固态继电器需求

本文深入解析了PMOS双向开关电路在固态继电器应用中的设计要点,重点探讨了防电流倒灌和高侧双向开关的实现技巧。通过拆解充电管理芯片中的PMOS背靠背结构,工程师可以构建高效可靠的固态开关方案,适用于智能硬件和电池管理系统。文章还提供了关键参数选择、电路优化建议及实测数据对比,助力解决电源防反接等工程难题。

weixin_33698043的博客 481

qmake language 内建函数 内置函数 自定义函数 defineTest(testfunctionname) defineReplace(repacefunctionname)

qmake language 内置函数 自定义函数 defineTest(testfunctionname) defineReplace(repacefunctionname) 函数 CONFIG isActiveConfig eval defined export escape_expand val_escape shadowed prompt

qiushangren的专栏 2050

ESP-01S使用micropython,利用Thonny烧写固件

在家舒服的太久了,想学习点新的东西,这次看上了ESP8266系列的联网设备,想自己做点小玩意出来耍耍,下面跟我一起来学习吧。本篇主要记录固件的烧写及测试。Thonny下载链接不算难,但是网上资源较少。也是提醒自己不要忘记这个步骤,记录一下,也分享给和我一样开始接触的小伙伴,加油加油,万事开头难。

weixin_43422072的博客 1693

FPGA远程升级必备:STARTUPE2原语控制Flash的避坑指南

本文深入解析了FPGA远程升级中STARTUPE2原语的核心价值与配置策略,详细介绍了其在QSPI Flash接口设计中的应用。通过Vivado工具和原语控制,开发者可以高效实现安全可靠的远程固件升级,提升系统稳定性和升级效率。

k8l9m0n的博客 396

python中func是什么_在Python/Django中test-func和view-func做什么?

我试图在Django中分解以下代码,以确定它在做什么,并在必要时对其进行编辑,但我不能很好地理解这些函数中的一些在做什么或它们来自何处。在test-func和view-func-Django是特定的还是这些内置的python函数?在结论:我不知道我是如何/为什么忽略了这一事实,即它们只是被定义为函数的参数。我需要开始注意细节。在下面是我要分解的Django函数:def user_passes_te...

weixin_39805529的博客 1126

binning模式下和normal模式下相同曝光参数相同场景加权亮度差异消除方案优化(一)

摘要:针对ISP参数设置中浮点权重系数需转换为整数的问题,提出整数邻域搜索方案。该方法在浮点最优解附近(±1/±2)进行局部搜索,通过逐阶微调找到误差最小的整数权重组合,避免直接取整导致的误差反弹(误差从0.8%降至0.35%)。方案结合范围约束(1~15)和单调性约束(暗端递减、亮端递增),兼顾计算效率(单图耗时<10ms)与硬件兼容性,显著优于暴力搜索和简单取整,满足工程落地需求。

大熊 97

变量在函数间的传递

变量在函数间的传递在c语言中,传递在函数间的变量有普通变量和指针变量,在被调函数中想要修改主调函数传来的变量,是我们在实际开发中经常用用到的技术。 1.普通变量的传递(值拷贝)int test_func(int test_a) { test_a = 5; return 0; }int main(void) { int main_a = 1; test_func(main

echo_bright_的博客 2811

RK3568 上C图像camera图像采集应用实例(二)

本文探索rk3568上实现C语言的 通过C v4l2 接口 采集图像 ,刷屏控制 drm的显示camera图像中 实现camera preview 预览 的实践和探索。

luoshanxuli2010的专栏 760

【数据集】中国各类水文专业常用数据集合集

对中国各类水文专业常用数据集进行整理并总结

WW、forever的博客 9300

Python--函数的进阶

带**的不定长参数(了解) 定义函数的时候在某个参数前加**,让这个参数变成不定长参数,可以同时接收多个关键字参数对应的实参。b.同一个函数中既有定长参数也有带*的不定长参数,那么*前面的定长参数必须用位置参数传参,*后面的定长参数必须用关键字传参。语法: 函数名 = lambda 形参列表:返回值 (使用实参高阶函数时更多的会使用匿名函数)注意:a.匿名函数的调用和普通函数没有区别 b.匿名函数至少需要一个形参。带*的不定长参数会变成一个元组,接收到的实参会变成元组中的元素。1)带*的不定长参数。

m0_73703409的博客 585

线程池详解(通俗易懂超级好)

目标 【理解】线程池基本概念 【理解】线程池工作原理 【掌握】自定义线程池 【应用】java内置线程池 【应用】使用java内置线程池完成综合案例 线程池 线程池基础 线程池使用 线程池综合案例 4.学员练习 5.线程池总结 概念介绍 1:什么是线程池 2:为什么使用线程池 3:线程池有哪些优势 什么是池 什么是线程池 线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runna.

拉格朗日的学习笔记 12万+

诺,你们要的Python进阶来咯!【函数、类进阶必备】

目录 一、Python进阶初体验——内置函数 1、数据类型相关 2、数值计算相关 3、bool 值判断相关 4、IO 相关 5、元数据相关 6、help()函数 7、sorted()函数 8、range()函数 二、给代码安个家——函数进阶 1、位置参数 2、参数默认值 3、关键字参数 4、任意参数列表 5、多返回值 三、让你函数更好用——类进阶 1、类属性和类方法 (1)类属性的定义 (2)类方法的定义 2、静态方法 3、私有属性、方法 4、特殊方法 5、类的

累计发表博客60余万字,优快云 博客专家、Java 领域优质创作者、华为云享专家、阿里云专家博主。专注分享 Java 优质文章,毕设实战项目开发,全网粉丝10W+ 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

python函数进阶及作业

​return a+b2.定义函数,接受三个参数:姓名、年龄、职业,然后打印出一个介绍信息,如“姓名:张三,年龄:25,职业:工程师”。print(f"姓名:{name},年龄:{age},职业{career}")a ( "张三", 25, "工程师")3.接收一个列表,返回这个列表的最大值 平均值 最小值4.输入一个包含若干整数的列表,输入列表的最大值,列如输入【1,2,3,4,6666】,输出6666。

annsksmd的博客 1051

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Python函数进阶

函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形式 无参数,无返回值 无参数,有返回值 有参数,无返回值 有参数,有返回值 定义函数时,是否接收参数,或者是否返回结果,是根据 实际的功能需求 来决定的! 如果函数 内部处理的数据不确...

新海说 369

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

09Python函数进阶

函数根据以及,可以,一共有组合形式。

dotnethello的博客 939

python函数基础及进阶

python函数的基础及进阶分享

qq_52758588的博客 1068

python 函数进阶_Python函数的进阶

上一节我们学习了函数的定义和调用,理解了基本的函数知识。本节进一步学习函数相关的更多内容,深入了解函数,包括:默认参数、关键字参数、位置参数、变量的作用域等等。形参和实参的不同首先,我们先搞清两个概念:形参(parameters),是定义函数时声明的参数名称,它定义了函数可以接受的参数类型;实参(arguments),是调用函数时传给函数的实际值。比如下面的函数定义:def func(foo, b...

weixin_42298100的博客 227

Python 函数 基础及其进阶

初学者Python入门,函数的基础及其进阶的基本语法和知识点

Yean666的博客 1095

python 函数进阶_python 函数进阶

形参角度:万能参数:​动态接收位置参数:*args​ **动态接收关键字参数:**kwargs ***的魔性用法:函数定义时 ,*代表聚合。他将所有的位置参数 聚合成一个元组,赋值给了args;函数定义时: **将所有的关键字参数聚合成一个字典中,将这个字典赋给了 kwargs;*和 **在函数的调用时 *代表打散仅限关键字参数:# def func(a,b,*args,sex...

weixin_42516005的博客 101

python 函数进阶_9、python函数进阶

函数进阶楔子假如有一个函数,实现返回两个数中的较大值:def my_max(x,y):m = x if x>y else yreturn mbigger = my_max(10,20)print(bigger)之前是不是我告诉你们要把结果return回来你们就照做了?可是你们有没有想过,我们为什么要把结果返回?如果我们不返回m,直接在程序中打印,行不行?来看结果:>>> d...

weixin_42313980的博客 313

【Python基础】Python函数进阶

有时可能需要一个函数能够处理的参数个数是不确定的,这个时候,就可以使用多值参数python中有两种参数名前增加一个可以接收元组参数名前增加两个可以接收字典一般在给多值参数命名时,习惯使用以下两个名字*args—— 存放元组参数,前面有一个**kwargs——存放字典参数,前面有两个args是arguments的缩写,有变量的含义kw是keyword的缩写,kwargs可以记忆键值对参数

qq_41413652的博客 823
上一篇: Python_数据容器_字典
下一篇: Python_文件操作
#spring bear#
博客等级 码龄8年 20粉丝 64原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值