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…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...