【Python】函数

在这里插入图片描述

个人主页:Guiat
归属专栏:Python

在这里插入图片描述

文章目录

  • 1. 函数的定义
    • 1.1 基本定义方式
    • 1.2 函数名和参数
  • 2. 函数的调用
    • 2.1 基本调用方式
    • 2.2 参数传递
  • 3. 函数的返回值
    • 3.1 `return` 语句
    • 3.2 返回多个值
  • 4. 函数的作用域
    • 4.1 局部变量
    • 4.2 全局变量
  • 5. 匿名函数(Lambda 函数)
    • 5.1 定义和使用
    • 5.2 应用场景
  • 6. 递归函数
    • 6.1 定义和原理
    • 6.2 优缺点

正文

1. 函数的定义

1.1 基本定义方式

在 Python 中,使用 def 关键字来定义函数。其基本语法如下:

def function_name(parameters):"""函数文档字符串,用于描述函数的功能和使用方法"""# 函数体,包含具体的执行代码return result  # 可选,用于返回函数的结果

以下是一个简单的示例,定义一个用于计算两个数之和的函数:

def add_numbers(a, b):"""计算两个数的和"""return a + b

1.2 函数名和参数

  • 函数名应该具有描述性,遵循 Python 的命名规范(通常使用小写字母和下划线)。
  • 参数是函数接收的输入值,可以有零个或多个。参数在函数定义时位于括号内,多个参数之间用逗号分隔。

2. 函数的调用

2.1 基本调用方式

定义好函数后,可以通过函数名加上括号并传入相应的参数来调用函数。例如,调用上面定义的 add_numbers 函数:

result = add_numbers(3, 5)
print(result)  # 输出 8

2.2 参数传递

  • 位置参数:按照参数在函数定义中的顺序依次传递值。例如:
def greet(name, message):print(f"{message}, {name}!")greet("Alice", "Hello")  # 位置参数传递
  • 关键字参数:通过指定参数名来传递值,这样可以不按照参数定义的顺序。例如:
greet(message="Hi", name="Bob")  # 关键字参数传递
  • 默认参数:在函数定义时可以为参数指定默认值,调用函数时如果没有提供该参数的值,则使用默认值。例如:
def greet(name, message="Hello"):print(f"{message}, {name}!")greet("Charlie")  # 使用默认的 message 值

3. 函数的返回值

3.1 return 语句

return 语句用于从函数中返回一个值,并终止函数的执行。一个函数可以有多个 return 语句,但只有一个会被执行。例如:

def is_even(num):if num % 2 == 0:return Truereturn Falseprint(is_even(4))  # 输出 True

3.2 返回多个值

在 Python 中,函数可以通过返回一个元组的方式返回多个值。例如:

def get_name_and_age():name = "David"age = 25return name, agename, age = get_name_and_age()
print(f"Name: {name}, Age: {age}")

4. 函数的作用域

4.1 局部变量

在函数内部定义的变量是局部变量,只能在函数内部访问。例如:

def example_function():local_variable = 10print(local_variable)example_function()
# print(local_variable)  # 这行代码会报错,因为 local_variable 是局部变量

4.2 全局变量

在函数外部定义的变量是全局变量,可以在函数内部访问,但如果要在函数内部修改全局变量的值,需要使用 global 关键字。例如:

global_variable = 20def modify_global():global global_variableglobal_variable = 30modify_global()
print(global_variable)  # 输出 30

5. 匿名函数(Lambda 函数)

5.1 定义和使用

Lambda 函数是一种简洁的、匿名的函数,通常用于简单的、一次性的操作。其基本语法为:

lambda arguments: expression

以下是一个使用 Lambda 函数的示例,用于计算两个数的乘积:

multiply = lambda a, b: a * b
print(multiply(4, 6))  # 输出 24

5.2 应用场景

Lambda 函数常用于需要传递一个简单函数作为参数的情况,例如在 map()filter() 等函数中。例如,使用 map() 函数将列表中的每个元素都平方:

numbers = [1, 2, 3, 4]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # 输出 [1, 4, 9, 16]

6. 递归函数

6.1 定义和原理

递归函数是指在函数内部调用自身的函数。递归函数通常包含两个部分:基本情况(终止条件)和递归情况。基本情况用于终止递归,避免无限循环。例如,计算阶乘的递归函数:

def factorial(n):if n == 0 or n == 1:return 1  # 基本情况return n * factorial(n - 1)  # 递归情况print(factorial(5))  # 输出 120

6.2 优缺点

  • 优点:递归函数可以使代码更加简洁、清晰,尤其适用于处理具有递归结构的问题,如树的遍历、分治算法等。
  • 缺点:递归函数可能会导致栈溢出错误,尤其是在递归深度很大的情况下。同时,递归函数的性能可能不如迭代实现,因为每次递归调用都需要额外的栈空间和函数调用开销。

结语
感谢您的阅读!期待您的一键三连!欢迎指正!

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PbootCMS增加可允许上传文件类型,例如webp、mov等文件格式扩展

在PbootCMS日常使用过程中,会涉及一些非常见的文件格式上传。 这时候就需要在PbootCMS配置文件中追加一些允许上传文件扩展名。 操作步骤 1、打开/config/config.php文件,大约在30行,修改upload配置信息: // 上传配置upload &…

EasyRTC视频通话WebP2P技术:轻量化SDK助力嵌入式设备实时音视频通信

在智能硬件井喷式发展的当下,嵌入式设备对实时音视频通信的需求正从实验室走向千行百业。然而,当开发者尝试将传统RTC(实时通信)方案移植到MCU、边缘计算终端等资源受限设备时,往往会遭遇一道难以逾越的屏障——Flash存…

Vript-Hard——一个基于高分辨率和详细字幕的视频理解算法

一、概述 多模态学习的最新进展促进了对视频理解和生成模型的研究。随之而来的是,对高分辨率视频和详细说明所建立的高质量数据集的需求激增。然而,由于时间因素的影响,视频与文本的配对不像图像那样容易。准备视频和文本配对是一项困难得多…

如何调整 Nginx工作进程数以提升性能

🏡作者主页:点击! Nginx-从零开始的服务器之旅专栏:点击! 🐧Linux高级管理防护和群集专栏:点击! ⏰️创作时间:2025年2月15日14点20分 Nginx 的工作进程数&#xff0…

SolidWorks速成教程P3-6【零件 | 第六节】——草图封闭轮廓所选轮廓厚度为零的报错

到这里,我们已经将特征成型的常用功能学完。这节我来继续讲解一下 SolidWorks中建模的一些容易忽略的问题(草图封闭轮廓&所选轮廓&厚度为零的报错)。 目录 1.草图封闭轮廓 2.所选轮廓 3.厚度为零的报错 1.草图封闭轮廓 我们在拉伸凸台时,一般都会绘制封闭的草…

关于post和get的请求参数问题

今天在和泓宇交流的时候,谈到了关于postman测试接口的问题。我昨天在postman测试的时候,对于条件查询不知道怎么测试,脑子里很混乱。今天,泓宇借着条件查询这个机会给我讲了讲get和post的请求参数的知识,趁着现在有记忆…

UE5中的四元数

UE5中的四元数 绕任意轴旋转四元数与矩阵四元数与欧拉角将一个向量旋转到另一个向量插值Reference 我们知道,四元数是除了欧拉角,旋转矩阵之外,主要用来描述旋转的量。四元数直观的定义就是 q [ c o s ( θ 2 ) , s i n ( θ 2 ) N ] q [c…

AUTOSAR MCAL层ETH模块(1)——通信原理

基础了解 ETH,以太网,简单来讲就是将几台设备连接起来形成网络。这种连接是点到点之间的。以太网的传输速率为10M~10G,速度非常快。 为了实现网络通信的标准化,普及网络应用,国际标准化组织(ISO)将整个以太网通信结构制…

什么是网关?网关有什么作用?API网关的主要功能,SpringCloud可以选择有哪些API网关?什么是限流算法?网关如何实现限流?一篇文章读懂网关的前世今生

1、什么是网关? API网关(API Gateway)是一种中间层服务器,用于集中管理,保护和路由对后端服务的访问。它充当了客户端与后端服务之间的入口点,提供了一组统一的接口管理和控制API的访问。 2、网关示意图 3…

【技术产品】DS三剑客:DeepSeek、DataSophon、DolphineSchduler浅析

引言 在大数据与云原生技术快速发展的时代,开源技术成为推动行业进步的重要力量。本文将深入探讨三个备受瞩目的开源产品组件:DeepSeek、DataSophon 和 DolphinScheduler,分别从产品定义、功能、技术架构、应用场景、优劣势及社区活跃度等方面…

架构——Nginx功能、职责、原理、配置示例、应用场景

以下是关于 Nginx 的功能、职责、原理、配置示例、应用场景及其高性能原因的详细说明: 一、Nginx 的核心功能 1. 静态资源服务 功能:直接返回静态文件(如 HTML、CSS、JS、图片、视频等)。配置示例:server {listen 80…

spring 学习 (注解)

目录 前言 常用的注解 须知 1 Conponent注解 demo(案例) 2 ControllerServiceRepository demo(案例) 3 ScopeLazyPostConstructPreDestroy demo(案例) 4 ValueAutowiredQualifierResource demo(案例) 5 Co…

机器学习 - 机器学习模型的评价指标

为了衡量一个机器学习模型的好坏,需要给定一个测试集,用模型对测试集 中的每一个样本进行预测,并根据预测结果计算评价分数。本文,我们来了解一下机器学习模型常用的评价指标。 一、分类问题常用到的混淆矩阵 在分类任务中&…

openAI最新o1模型 推理能力上表现出色 准确性方面提升 API如何接入?

OpenAI o1模型在回答问题前会进行深入思考,并生成一条内部推理链,使其在尝试解决问题时可以识别并纠正错误,将复杂的步骤分解为更简单的部分,并在当前方法无效时尝试不同的途径。据悉,o1不仅数学水平与美国奥林匹克竞赛…

基于ArduPilot开发无人机飞控自动驾驶仪

目录 1、项目参数 2、硬件设计解析 2.1、主控与协处理器架构 2.2、高精度传感器集成 2.3、数据存储与恢复 2.4、电源管理与保护 2.5、通信与接口 本项目基于开源飞行控制固件 ArduPilot 开发,设计并实现了一款高度集成的 自动驾驶仪,可广泛应用于…

传输层协议TCP ( 下 )

文章目录 前言序号与确认序号超时重传RTOJacobson算法内核中超时时间的计算 滑动窗口滑动窗口延迟应答流量控制 拥塞控制慢启动拥塞避免快重传快速恢复 保活机制参考资料 前言 TCP(Transmission Control Protocol,传输控制协议)是互联网最重要…

vscode使用常见问题处理合集

目录 一、使用vite创建的vue3项目,script和style首行代码不会缩进,且格式化属性字段等会换行问题 首行缩进情况如下: 属性、参数格式化换行情况如下: 解决方式: 一、使用vite创建的vue3项目,script和style首行代码不…

【C语言】程序环境与预处理

目录 程序的翻译环境和执行环境 粗谈编译链接 翻译环境 编译的几个阶段及链接 运行环境 预处理详解 预定义符号 #define #define 定义标识符 #define 定义宏 #define 替换规则 #和## 带副作用的宏参数 宏和函数的对比 命名约定 #undef 命令行定义 条件编译 …

类与对象C++详解(中)-----构造函数与析构函数

1.构造函数 构造函数是一个特殊的成员函数,函数名和类名相同,构造函数的作用是初始化,以下是构造函数的一些特点: 1. 函数名与类名相同。 2. ⽆返回值。(返回值啥都不需要给,也不需要写void,不要纠结&#…

计算机网络(1)基础篇

目录 1.TCP/IP 网络模型 2.键入网址--->网页显示 2.1 生成HTTP数据包 2.2 DNS服务器进行域名与IP转换 2.3 建立TCP连接 2.4 生成IP头部和MAC头部 2.5 网卡、交换机、路由器 3 Linux系统收发网络包 1.TCP/IP 网络模型 首先,为什么要有 TCP/IP 网络模型&a…