当前位置: 首页 > news >正文

6.Python函数:函数定义、函数的类型、函数参数、函数返回值、函数嵌套、局部变量、全局变量、递归函数、匿名函数

1. 函数定义

Python函数通过def关键字定义。一个函数通常包括函数名、参数列表和函数体。

def greet(name):return f"Hello, {name}!"

2. 函数的类型

Python中的函数主要有以下几种类型:

  • 普通函数:具有明确的输入参数和返回值。
  • 递归函数:函数内部调用自身。
  • 匿名函数(Lambda函数):没有名字的小函数,通常用于简单的操作。

3. 函数参数

函数的参数有不同的形式:

  • 位置参数:按照定义顺序传入参数。

    def add(a, b):return a + b
    add(1, 2)  # 输出:3
    
  • 默认参数:为参数指定默认值,如果调用时没有传入该参数,使用默认值。

    def greet(name, greeting="Hello"):return f"{greeting}, {name}!"
    print(greet("Alice"))  # 输出:Hello, Alice!
    print(greet("Alice", "Good Morning"))  # 输出:Good Morning, Alice!
    
  • 可变参数(*args:接收多个位置参数,将它们作为元组传递给函数。

    def sum_all(*args):return sum(args)
    print(sum_all(1, 2, 3))  # 输出:6
    
  • 关键字参数(**kwargs:接收多个关键字参数,将它们作为字典传递给函数。

    def print_info(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")
    print_info(name="Alice", age=25)
    # 输出:
    # name: Alice
    # age: 25
    

4. 函数返回值

Python函数通过return语句返回一个值,可以返回任意类型的对象(如数字、字符串、列表、字典等)。

def multiply(x, y):return x * y
result = multiply(2, 3)  # 输出:6

如果没有return语句,函数将默认返回None

def no_return():pass
print(no_return())  # 输出:None

5. 函数嵌套

函数可以在另一个函数内定义,称为函数嵌套。内嵌的函数只能在外部函数内部使用。

def outer():def inner():return "Hello from the inner function!"return inner()
print(outer())  # 输出:Hello from the inner function!

6. 局部变量与全局变量

  • 局部变量:在函数内部定义的变量,只能在该函数内部访问。

    def example():local_var = 10print(local_var)
    example()  # 输出:10
    
  • 全局变量:在函数外部定义的变量,可以在函数内部访问。可以通过global关键字在函数内修改全局变量的值。

    global_var = 5
    def modify_global():global global_varglobal_var = 10
    modify_global()
    print(global_var)  # 输出:10
    

7. 递归函数

递归函数是函数内部调用自身。递归通常需要一个终止条件,否则会导致无限递归,最终引发RecursionError

def factorial(n):if n == 0:return 1else:return n * factorial(n - 1)
print(factorial(5))  # 输出:120

8. 匿名函数(Lambda函数)

lambda函数是没有名字的小函数,通常用于需要简单操作的场合。语法为:lambda 参数: 表达式

# 示例:求平方
square = lambda x: x ** 2
print(square(3))  # 输出:9# 示例:排序
data = [(1, 'one'), (3, 'three'), (2, 'two')]
data.sort(key=lambda x: x[0])
print(data)  # 输出:[(1, 'one'), (2, 'two'), (3, 'three')]

总结

  • 函数定义:通过def定义。
  • 函数类型:包括普通函数、递归函数和匿名函数。
  • 函数参数:支持位置参数、默认参数、可变参数和关键字参数。
  • 返回值:通过return语句返回,默认为None
  • 函数嵌套:可以在函数内部定义其他函数。
  • 局部变量与全局变量:局部变量仅在函数内有效,global关键字用于修改全局变量。
  • 递归函数:函数调用自身,通过终止条件避免无限递归。
  • 匿名函数(Lambda函数):简单的匿名函数,适合短小的操作。

相关文章:

6.Python函数:函数定义、函数的类型、函数参数、函数返回值、函数嵌套、局部变量、全局变量、递归函数、匿名函数

1. 函数定义 Python函数通过def关键字定义。一个函数通常包括函数名、参数列表和函数体。 def greet(name):return f"Hello, {name}!"2. 函数的类型 Python中的函数主要有以下几种类型: 普通函数:具有明确的输入参数和返回值。递归函数&am…...

青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用

青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用 一、类类的定义和使用示例 二、定义1. 类定义语法2. 属性和方法3. 构造器和初始化4. 实例化5. 类变量和实例变量6. 类方法和静态方法7. 继承8. 多态总结 三、使用1. 创建类的实例2. 访问属性3. 调用方法4. 修…...

CosyVoice /F5-TTS /GPT-SoVITS /Fish-Speech 开源语音克隆与文本转语音(TTS)项目的对比整理

四个主流开源语音克隆与文本转语音(TTS)项目的对比整理,基于公开资料与实测反馈总结: 项目CosyVoice F5-TTS GPT-SoVITS Fish-Speech 核心技术双向流式语音合成,支持离线与流式一体化建模基于流匹配的ConvNeXt文本表示…...

MySQL基于binlog和gtid主从搭建方案

MySQL基于binlog和gtid主从搭建方案 一.主库配置 1.1 确认 binlog 是否开启 SHOW VARIABLES LIKE %log_bin%; 1.2 创建日志目录并设置权限 mkdir -p /opt/mysql/log_bin chown -R mysql:mysql /usr/local/mysql chmod -R 755 /usr/local/mysql 1.3 修改 my.cnf 配置文件 …...

5 计算机网络

5 计算机网络 5.1 OSI/RM七层模型 5.2 TCP/IP协议簇 5.2.1:常见协议基础 一、 TCP是可靠的,效率低的; 1.HTTP协议端口默认80,HTTPSSL之后成为HTTPS协议默认端口443。 2.对于0~1023一般是默认的公共端口不需要注册,1024以后的则需…...

Vim跳转文件及文件行结束符EOL

跳转文件 gf 从当前窗口打开那个文件的内容,操作方式:让光标停在文件名上,输入gf。 Ctrlo 从打开的文件返回之前的窗口 Ctrlwf 可以在分割的窗口打开跳转的文件,不过在我的实验不是次次都成功。 统一行尾格式 文本文件里存放的…...

智能理解 PPT 内容,快速生成讲解视频

当我们想根据一版 PPT 制作出相对应的解锁视频时,从撰写解锁词,录制音频到剪辑视频,每一个环节都需要投入大量的时间和精力,本方案将依托于阿里云函数计算 FC 和百炼模型服务,实现从 PPT 到视频的全自动转换&#xff0…...

【鸿蒙开发】第二十四章 AI - Core Speech Kit(基础语音服务)

目录 1 简介 1.1 场景介绍 1.2 约束与限制 2 文本转语音 2.1 场景介绍 2.2 约束与限制 2.3 开发步骤 2.4 设置播报策略 2.4.1 设置单词播报方式 2.4.2 设置数字播报策略 2.4.3 插入静音停顿 2.4.4 指定汉字发音 2.5 开发实例 3 语音识别 3.1 场景介绍 3.2 约束…...

Java/Kotlin双语革命性ORM框架Jimmer(一)——介绍与简单使用

概览 Jimmer是一个Java/Kotlin双语框架 包含一个革命性的ORM 以此ORM为基础打造了一套综合性方案解决方案,包括 DTO语言 更全面更强大的缓存机制,以及高度自动化的缓存一致性 更强大客户端文档和代码生成能力,包括Jimmer独创的远程异常 …...

番外02:前端八股文面试题-CSS篇

一:CSS基础 1:CSS选择器及其优先级 2:display的属性值及其作用 属性值作用none元素不显示,并且会从文档流中移除block块类型,默认元素为父元素宽度,可设置宽高,换行显示inline行内元素类型&a…...

Redis Copilot:基于Redis为AI打造的副驾工具

我们最近发布了Redis Copilot,以帮助开发者更快地使用Redis构建应用。我们的使命是使应用程序快速运行,并简化构建过程。为此,Redis Copilot作为您的AI助手,能够让您更迅速地完成与Redis相关的任务。您今天就可以在Redis Insight中…...

JavaScript遍历对象的7种方式

注:纯手打,如有错误欢迎评论区交流! 转载请注明出处:https://blog.csdn.net/testleaf/article/details/145523427 编写此文是为了更好地学习前端知识,如果损害了有关人的利益,请联系删除! 本文章…...

如何避免NACK重传风暴

策略 1,10 次 NACK 模块对同一包号的最大请求次数,超过这个最大次数限制,会把该包号移出 nack_list,放弃对该包的重传请求。 策略 2,20 毫秒 NACK 模块每隔 20 毫秒批量处理 nack_list,获取一批请求包号…...

并发工具CountDownLatch、CyclicBarrier、Semaphore

文章目录 学习链接CountDownLatchCountDownLatch类的作用类的主要方法介绍图解await和countDown方法两个典型用法注意点总结示例CountDownLatchDemo1CountDownLatchDemo2CountDownLatchDemo1And2 CyclicBarrierCyclicBarrier循环栅栏CyclicBarrier和CountDownLatch的区别示例Cy…...

十二. Redis 集群操作配置(超详细配图,配截图详细说明)

十二. Redis 集群操作配置(超详细配图,配截图详细说明) 文章目录 十二. Redis 集群操作配置(超详细配图,配截图详细说明)1. 为什么需要集群-高可用性2. 集群概述(及其搭建)3. Redis 集群的使用4. Redis 集群故障恢复5. Redis 集群的 Jedis 开发(使用Java…...

网络工程师 (26)TCP/IP体系结构

一、层次 四层: 网络接口层:TCP/IP协议的最底层,负责网络层与硬件设备间的联系。该层协议非常多,包括逻辑链路和媒体访问控制,负责与物理传输的连接媒介打交道,主要功能是接收数据报,并把接收到…...

TensorFlow域对抗训练DANN神经网络分析MNIST与Blobs数据集梯度反转层提升目标域适应能力可视化...

全文链接:https://tecdat.cn/?p39656 本文围绕基于TensorFlow实现的神经网络对抗训练域适应方法展开研究。详细介绍了梯度反转层的原理与实现,通过MNIST和Blobs等数据集进行实验,对比了不同训练方式(仅源域训练、域对抗训练等&am…...

保姆级教程--DeepSeek部署

以DeepSeek-R1或其他类似模型为例,涵盖环境配置、代码部署和运行测试的全流程: 准备工作 1. 注册 Cloud Studio - 访问 [Cloud Studio 官网](https://cloudstudio.net/),使用腾讯云账号登录。 - 完成实名认证(如需长期使用…...

机器学习之心的创作纪念日

机缘 今天,是我成为创作者的第1460天。 在这段时间里,获得了很大的成长。 虽然日常忙碌但还在坚持创作、初心还在。 日常 创作已经成为我生活的一部分,尤其是在我的工作中,创作是不可或缺的,创作都是核心能力之一。…...

VeryReport和FastReport两款报表软件深度分析对比

在当今数据驱动的商业环境中,报表软件已经成为企业管理和数据分析的重要工具。无论是中小型企业还是大型企业,都需要依赖高效的报表工具来快速生成、分析和展示数据。市面上有许多报表工具,其中VeryReport和FastReport是两款备受关注的报表软…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

Python如何给视频添加音频和字幕

在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析,分为​​已启动​​和​​未启动​​两种场景: 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​:当其他组件(如Activity、Service)通过ContentR…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...