python函数
目录
函数基本语法
函数定义
函数调用
形式参数和实际参数
None类型
None主要作用
函数的说明文档
语法
变量的作用域
变量分类
global关键字
不加global关键字
加global关键字
函数的多返回值
多返回值写法
函数的四种传参方式
位置参数
关键字参数
缺省参数
不定长参数
不定长参数类型
位置传递参数的不定长
关键字传递参数的不定长
匿名函数
函数作为参数传递
lambda匿名函数
函数的定义
匿名函数的定义
函数基本语法
含义:组织好的,可重复使用的,用来实现特定功能的代码段
函数定义
def 函数名(传入参数1,传入参数2):函数体return 返回值
函数调用
函数名(传入参数1,传入参数2)
注意:
- 函数定义时函数的传入参数以及返回值(包括return关键字)可以省略
- 函数定义完成之后只有经过调用才能生效
- 函数的传入参数在函数计算时用来接收函数调用时提供的数据
- 通过return关键字,就能向调用者返回数据(也称返回值)
- 函数体遇到return关键字后就表明函数在这里结束了,之后的代码不执行
- 有返回值的函数可以用一个变量接受该函数的返回值
- 若函数没有使用return关键字返回数据,那么函数也有返回值,这个返回值就是None
#创建一个函数用来统计字符串的长度
def my_len(data):count=0for i in data:count+=1print(f"字符串{data}的长度是{count}")
#创建一个字符串
str="hello world"
#调用函数
my_len(str)
形式参数和实际参数
- 形式参数:在函数定义时,提供的x、y称之为形式参数,表示声明时将要使用的参数
- 实际参数:函数调用时,提供的参数称之为实际参数,表示函数执行时真正使用的参数
注意:形式参数要和实际参数一一对应
None类型
含义:None作为一个特殊的字面量,表示:空、无意义,其有非常多的应用场景
None主要作用
- 用在函数的返回值上表示无返回值
- 用在if判断上,None等同于False(一般用于在函数中主动返回None,配合if判断做相关处理)
- 用于声明无内容的变量上(定义变量,但暂时不需要变量具有具体值,可以用None代替)
def check_test():print("用来测试None")
flag=check_test()
print(f"函数的返回值为:{flag},具体类型为:{type(flag)}")
#函数的返回值为:None,具体类型为:<class 'NoneType'>
函数的说明文档
前言:函数是纯代码语言,想要理解其含义,就需要一行行的去阅读理解代码,效率比较低,因此我们可以给函数添加说明文档,辅助理解函数的作用
语法
"""
函数说明
:params x:形参函数x的说明
:params y:形参函数y的说明
:return 返回值的说明
"""
注意:我们可以通过多行注释的形式,对函数进行说明解释
变量的作用域
含义:变量的作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)
变量分类
- 局部变量:定义在函数体内部的变量,即只在函数体内部生效(作用在函数体的内部,在函数运行的时候临时保存数据,当函数调用完成之后立刻就销毁了局部变量)
- 全局变量:指在函数体内外都能生效的变量
global关键字
作用:主要用在函数内部将定义的变量声明为全局变量
不加global关键字
num=200
def test_a():num=500print(f"函数内num的值:{num}")
test_a()#500
print(f"外部num的值:{num}")#200
加global关键字
num=200
def test_a():global numnum=500print(f"函数内num的值:{num}")
test_a()#500
print(f"外部num的值:{num}")#500
函数的多返回值
前言:若一个函数写了2个return,那么他只会执行第一个return,原因是return可以退出当前函数,导致return下方的代码不执行
多返回值写法
#多返回值函数的定义
def 函数名:函数语句return 返回值1,返回值2#多返回值函数的接收
变量1, 变量2=函数名()
注意:
- 多返回值的接收,写对应顺序的多个变量接收即可
- 多返回值的书写以及多返回值的接收时应该用逗号隔开
- 多返回值的返回类型不受限
#多返回值函数的定义
def test_return():return "hello",666,True
#多返回值的接收
x,y,z=test_return()
print(x)#hello
print(y)#666
print(z)#True
函数的四种传参方式
前言:根据使用方式上的不同,函数有四种常见的参数使用方式
位置参数
含义:调用函数时根据函数定义的参数位置来传递参数
def user_info(name,age,gender):print(f"您的名字是:{name},您的年龄是:{age},您的性别是:{gender}")user_info('Tom',20,'男')
#您的名字是:Tom,您的年龄是:20,您的性别是:男
注意:传递参数和定义的参数顺序及个数必须一致
关键字参数
含义:函数调用时,通过“键=值”的形式传递参数
作用:可以让函数更加清晰,容易使用,同时也清楚了参数的顺序需求
def user_info(name,age,gender):print(f"您的名字是:{name},您的年龄是:{age},您的性别是:{gender}")user_info(age=20,name='Tom',gender='男')
#您的名字是:Tom,您的年龄是:20,您的性别是:男
注意:函数调用时,若有位置参数,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序
缺省参数
含义:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值
作用:当调用函数时没有传递参数,就会使用默认缺省参数的值
def user_info(name,age,gender='男'):print(f"您的名字是:{name},您的年龄是:{age},您的性别是:{gender}")user_info("Tom",20)
#您的名字是:Tom,您的年龄是:20,您的性别是:男
user_info("Tom",20,"女")
#您的名字是:Tom,您的年龄是:20,您的性别是:女
注意:
- 函数定义时,所有的位置参数必须出现在默认参数前
- 函数调用时,若为缺省参数传值则修改默认参数值,否则使用这个默认值
不定长参数
含义:也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景
作用:当调用函数不确定参数个数时,可以使用不定长参数
不定长参数类型
位置传递参数的不定长
def user_info(*args):print(f"您传的参数为:{args},其类型为:{type(args)}")user_info('Tom')
#您传的参数为:('Tom',),其类型为:<class 'tuple'>
user_info('Tom',18)
#您传的参数为:('Tom', 18),其类型为:<class 'tuple'>
注意:传进去的所有参数都会被*后面的变量收集(形式参数为*变量名),他会根据传进参数的位置合并成一个元组(tuple),该变量是元组类型一般用args,这就是位置传递
关键字传递参数的不定长
def user_info(**kwargs):print(f"您传的参数为:{kwargs},其类型为:{type(kwargs)}")user_info(name='Tom')
#您传的参数为:{'name': 'Tom'},其类型为:<class 'dict'>
user_info(name='Tom',age=20)
#您传的参数为:{'name': 'Tom', 'age': 20},其类型为:<class 'dict'>
注意:关键字传递的不定长参数,参数是键=值形式的情况下,所有的键值对都会被**后面的变量接收(形式参数为**变量名)这个变量一般用kwargs,同时会根据键=值组成字典
匿名函数
函数作为参数传递
前言:函数除了可以将数据传入一个函数内,其实我们也可以将函数本身作为一个参数传入另一个函数内
def test_func(compute):result=compute(1,2)print(f"计算结果为:{result}")def compute(x,y):return x+ytest_func(compute)
#计算结果为:3
def test_func(compute):result=computeprint(f"计算结果为:{result}")def Add(x,y):return x+ytest_func(Add(1,2))
#计算结果为:3
注意:将函数作为参数传入的作用在于传入计算逻辑,而非传入数据
lambda匿名函数
函数的定义
- def关键字,可以定义带有名称的函数
- lambda关键字,可以定义匿名函数(无名称)
注意:有名称的函数可以基于名称重复使用,无名称的匿名函数,只可以临时使用一次
匿名函数的定义
lambda 传入参数:函数体(一行代码)
注意:
- lambda是关键字,表示定义匿名函数
- 传入参数表示匿名函数的形式参数,如:x,y表示接收两个形式参数
- 函数体,就是函数的执行逻辑,匿名函数只能写一行,无法写多行代码
- 匿名函数用于临时构建一个函数,只用一次的场景
- lambda函数是直接将函数体的结果return的,所以可以直接省略return
def test_func(compute):result=compute(1,2)print(f"计算结果为:{result}")
def compute(x,y):return x+y
test_func(compute)
#计算结果为:3#通过lambda关键字,传入一个一次性使用的lambda匿名函数
test_func(lambda x,y:x+y)
##计算结果为:3
相关文章:
python函数
目录 函数基本语法 函数定义 函数调用 形式参数和实际参数 None类型 None主要作用 函数的说明文档 语法 变量的作用域 变量分类 global关键字 不加global关键字 加global关键字 函数的多返回值 多返回值写法 函数的四种传参方式 位置参数 关键字参数 缺省参…...
【Linux】进程间通信——system V共享内存
目录 写在前面的话 System V共享内存原理 System V共享内存的建立 代码实现System V共享内存 创建共享内存shmget() ftok() 删除共享内存shmctl() 挂接共享内存shmat() 取消挂接共享内存shmdt() 整体通信流程的实现 写在前面的话 上一章我们讲了进程间通信的第一种方式…...
【数据结构】快速排序
快速排序是一种高效的排序算法,其基本思想是分治法。它将一个大问题分解成若干个小问题进行解决,最后将这些解合并得到最终结果。 快速排序的主要思路如下: 选择一个基准元素:从待排序的数组中选择一个元素作为基准(…...
人机融合智能中的事实与价值
在人机融合智能中,事实和价值分别扮演着不同的角色和功能。 事实是客观存在的真实描述,可以通过数据、观测和验证等方式获取。在人机融合智能中,人工智能通过处理和分析大量的数据来提供客观事实的支持。例如,在搜索引擎中&#x…...
JVM | 从类加载到JVM内存结构
引言 我在上篇文章:JVM | 基于类加载的一次完全实践 中为你讲解如何请“建筑工人”来做一些定制化的工作。但是,大型的Java应用程序时,材料(类)何止数万,我们直接堆放在工地上(JVM)…...
Golang之路---04 并发编程——WaitGroup
WaitGroup 为了保证 main goroutine 在所有的 goroutine 都执行完毕后再退出,前面使用了 time.Sleep 这种简单的方式。 由于写的 demo 都是比较简单的, sleep 个 1 秒,我们主观上认为是够用的。 但在实际开发中,开发人员是无法…...
React(4)
1.属性(props)初始 状态state都是组件内部写的,也就是A组件内的state就只能A组件里面用,其他组件复用不了。因此属性props就可以。 比如一个导航栏,首页有,购物车有,我的有,他们三个…...
STM32 CubeMX USB_(HID 鼠标和键盘)
STM32 CubeMX STM32 CubeMX USB_HID(HID 鼠标和键盘) STM32 CubeMX前言 《鼠标小节》一、STM32 CubeMX 设置USB时钟设置USB使能UBS功能选择 二、代码部分添加代码鼠标发送给PC的数据解析实验效果 《键盘小节》STM32 CubeMX 设置(同上…...
[PM]敏捷开发之Scrum总结
在项目管理中,不少企业和项目团队也发现传统的项目管理模式已不能很好地适应今天的项目环境的要求。因此,敏捷项目管理应运而生,本文将为大家介绍Scrum敏捷项目管理以及应用方法。 什么是Scrum敏捷项目管理 敏捷项目管理作为新兴的项目管理模…...
大数据Flink(五十七):Yarn集群环境(生产推荐)
文章目录 Yarn集群环境(生产推荐) 一、准备工作...
web集群学习:源码安装nginx配置启动服务脚本
1、源码安装nginx,并提供服务脚本。 1、源码安装会有一些软件依赖 (1)检查并安装 Nginx 基础依赖包 pcre-devel 、openssl-devel # rpm -qa | egrep pcre-devel | openssl-devel(2)安装 Nginx 所需的 pcre 库 正则支…...
LNMP
lNmp安装: 一、LNMP LNMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件, 能够提供动态Web站点服务及其应用开发环境。LNMP是一个缩写词,具体包括Linux操作系统、nginx网站服务器、MySQL数据库服务…...
Python网络爬虫在信息采集中的应用及教程
Python网络爬虫在信息采集中的应用与法律警告 摘要 随着互联网的发展,我们每天都面临着海量的信息。这些信息蕴含着无尽的价值,而要从中获取有用的数据,网络爬虫就成了我们的得力助手。Python作为一门简单而又强大的编程语言,被…...
云主机测试Flink磁盘满问题解决
问题描述: 使用云主机测试Flink时,根目录满了。 经排查发现运行Flink任务后根目录空间一直在减少,最后定位持续增加的目录是/tmp目录 解决方法: 修改Flink配置使用一个相对较大的磁盘目录做为Flink运行时目录 # Override the…...
iOS开发-NSOperationQueue实现上传图片队列
iOS开发-NSOperationQueue实现上传图片队列 在开发中,遇到发帖需要上传图片,需要上传队列,这时候用到了NSOperationQueue 一、NSOperation与NSOperationQueue 什么NSOperation NSOperation为控制任务状态、优先级、依赖关系以及任务管理提…...
通过 CCIP 构建跨链应用(5 个案例)
Chainlink 的跨链互操作性协议(CCIP)是一种新的通用跨链通信协议,为智能合约开发人员提供了以最小化信任的方式在区块链网络之间传输数据和通证的能力。 目前,部署在多个区块链上的应用程序面临着资产、流动性和用户的碎片化问题…...
基于 yolov8 的人体姿态评估
写在前面 工作中遇到,简单整理博文内容为使用预训练模型的一个预测 Demo测试图片来源与网络,如有侵权请告知理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停…...
计算机视觉(六)图像分类
文章目录 常见的CNNAlexnet1乘1的卷积 VGG网络Googlenet(Inception V1、V2、V3)全局平均池化总结 Resnet、ResnextResNet残差网络ResNeXt网络 应用案例VGGResnet 常见的CNN Alexnet DNN深度学习革命的开始 沿着窗口进行归一化。 1乘1的卷积 VGG网络…...
解决:vue通过params传参刷新页面参数丢失问题以及实现vue路由可选参数的解决办法
目录 🙋♂️ 实现params传参,刷新页面不丢参 🙋♂️ 实现vue配置可选路由参数 🙋♂️ 参考资料 解决vue 通过 name 和 params 进行页面传参时,刷新页面参数丢失问题以及vue路由实现可选参数 🙋♂…...
将postman接口导出的json转换为markdown
您可以使用 Postman 官方提供的工具或第三方工具将 Collection 文件转换为 Markdown 文件。 方式一 Postman 官方提供的工具是 Newman,它是一个命令行工具,可以帮助您运行和测试 Postman Collection,还可以将 Collection 转换为多种格式&am…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
