python学习笔记----函数(五)

一、函数介绍

  • 在 Python 中,函数是一个组织好的、可重用的代码块,用来执行一个单一的、相关的动作。函数提供了代码的模块化和代码复用的能力。它可以接受输入参数,并可以返回一个结果。函数在 Python 编程中是基本的构建块之一。

二、函数的定义

函数的定义:

  • 先定义函数
  • 后调用函数
  • 参数不需要,可以省略
  • 返回值不需要,可以省略
def 函数名(传入参数):函数体return 返回值

示例:

# 定义一个函数,输出相关信息
def say_hello():print("hello")# 调用函数
say_hello()

三、函数的参数

在 Python 中,函数的参数是用来传递信息或数据给函数的变量。通过使用参数,函数可以接收外部的输入值,这些输入值在函数调用时被指定,使函数更具通用性和灵活性。

# 定义两数相加的函数,通过参数接收被计算的2个数字
def add(x, y):result = x + yprint(f"{x}+{y}的计算结果是:{result}")# 调用函数
add(1,2)

语法解析:

  • 函数定义中,x和y,称之为:形式参数(形参),表示函数声明将要使用2个参数
  • 参数之间使用逗号分隔
  • 函数调用中,1和2,称之为:实际参数(实参),表示函数执行时真正使用的参数值
  • 传入的时候,按照顺序传入数据,使用逗号分隔

三、函数的返回值

3.1 什么是函数的返回值

  • 函数的返回值是指函数完成执行后传回给调用者的数据。返回值使得函数不只是执行操作,还可以产生结果并将其传递给其他程序的部分。这种机制是函数编程的核心部分,它允许函数与外部代码交互、传递数据和表达式的结果。
  • 函数中的 return 语句用于结束函数执行并指定返回值。return 可以跟任何数据类型的对象,包括数字、字符串、列表、字典、元组、布尔值或更复杂的对象。如果函数内部没有 return 语句,或者 return 语句没有跟随任何值,函数默认返回 None。

3.1函数返回值的语法

def 函数名(传入参数):函数体return 返回值

示例:

# 定义一个函数,完成两数相加功能
def add(a, b):return a + br = add(1, 2)
print(r)

3.2函数返回值之None类型

  • 在 Python 中,如果一个函数没有显式地使用 return 语句返回数据,或者 return 语句后没有跟任何值,那么这个函数依然有返回值,但这个返回值默认是 None
  • None 是 Python 的一个特殊数据类型,用来表示空值或无值的状态。它通常用于标示某些东西不存在或未定义。

示例:

def print_hello():print("Hello, world!")result = print_hello()
print(result)  # 输出 None

四、函数的说明文档

  • 函数是纯代码语言,想要理解其含义,就需要一行行去阅读理解代码,效率比较低
  • 我们可以给函数添加说明文档,辅助理解函数的作用。

语法:

def func(x, y):""":param x: 形参x的说明:param y: 形参y的说明:return: 返回值的说明"""函数体return 返回值
# 定义函数,进行文档说明
def add(x, y):"""add函数可以接收2个参数,进行两数相加的功能:param x: 形参x表示相加的其中一个数字:param y: 形参y表示相加的另一个数字:return:  返回值是两数相加的结果"""result = x + yreturn result
  • 在pycharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档

在这里插入图片描述


五、变量的作用域

  • 变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)
  • 主要分为两类:局部变量和全局变量

5.1局部变量

  • 所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效

示例:

# 演示局部变量
def test_a():num = 100print(num)test_a()
print(num) # 报错:name 'num' is not defined.

示例中变量num是定义在test_a函数内部的变量,在函数外部访问则立即报错

  • 局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量

5.2全局变量

  • 所谓全局变量,指的是在函数体内、外都能生效的变量

示例:

# 演示全局变量
num = 200def test_a():print(f"test_a: {num}")def test_b():print(f"test_b: {num}")test_a()
test_b()
print(num)

5.3 global关键字

思考:test_a()函数需要修改全局变量num的值为500,如何修改程序?

num = 200
def test_a():num = 500print(f"test_a: {num}")def test_b():print(f"test_b: {num}")test_a()
test_b()
print(num)

在这里插入图片描述

  • 当你在 test_a() 函数中设置 num = 500 时,你实际上是在函数的局部作用域内创建了一个新的变量 num,它只在 test_a() 函数内有效。这个变量是局部变量,它与全局作用域中的 num 是两个完全不同的变量,即使它们的名字相同。
  • test_b() 函数内部没有定义局部变量 num,所以当你尝试打印 num 时,Python 查找这个变量名会回退到外部作用域,也就是全局变量 num,其值为 200。
  • 最后的 print(num) 语句也是在全局作用域中执行,因此它访问的是全局变量 num,值同样为 200。

global关键字

  • 如果你希望 test_a() 函数修改全局变量 num,你需要在该函数内部使用 global 关键字来声明 num:
  • 在这个修改后的版本中,所有的输出都将是 500,因为 test_a() 现在修改了全局作用域中的 num 变量。

示例

num = 200
def test_a():global numnum = 500print(f"test_a: {num}")def test_b():print(f"test_b: {num}")test_a()
test_b()
print(num)

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

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

相关文章

Docker深入探索:网络与资源控制、数据管理与容器互联以及镜像生成

目录 一、 Docker网络 (一)Docker网络实现原理 (二)Docker网络模式 1. Bridge网络(默认) 2. Host网络 3. None网络 4. Container网络 5. 自定义网络 二、资源控制 (一)cgr…

电池管理协议SMBus/I2C在STM32CubeMX配置使用-读取SN8765电池组

一、前言 目前有个电源组需要通过i2c进行读取,获取一些电池信息,采用SMBus协议进行读取,其可以看作i2c的子集,可以直接通过i2c的接口进行读写。SMBus建立在被广泛采用的I2C总线之上,并定义了OSI(开放系统互…

进行RLC防孤岛负载测试的步骤和规范

RLC防孤岛负载测试是用于检测并防止电力系统出现孤岛现象的测试方法,孤岛现象是指当电网因故障或停电而与主电网断开连接时,部分电力设备仍在运行,形成一个没有与主电网连接的独立电网。这种情况下,如果电力设备不能及时检测到孤岛…

职场人是如何被拉开差距的?

事实上,职场人的差距从第一天就拉开了。 心理学里有一个词,叫做“首因效应,说的是人们在第一次接触时形成的印象,将会决定后续认知的基调。 入职第一天,从自我介绍开始,展示自己的特长,给大家…

IOT病毒分析

前言: 最近审计报警日志,发现了一个IOT病毒,利用的是CVE-2023-1389漏洞扫描tplink,进行攻击,有点意思,拿出来分析下。 发现: 查看流量日志,发现了一个有问题的访问: 访…

【ArcGIS 疑难杂症】无法展开和读取xls、xlsx文件

xls、xlsx文件在ArcGIS中经常用来链接属性。 但是无论ArcMap还是ArcPro,打开xls、xlsx文件时候可能会出现报错。 比如,ArcMap可以打开xls,但是打开xlsx时会出现下面的报错。 而ArcPro就更逊了,xls、xlsx两种都打不开。 以上是小…

网工内推 | 网络工程师,CCIE认证优先,最高10k*13薪

01 广东丰德科技有限公司 招聘岗位:网络工程师 职责描述: 1、负责运营商机房的网络设备的运行维护、故障应急处理; 2、负责各类型网络设备或网络相关的故障的故障分析及诊断; 3、独立完成网络项目的方案设计编写并负责方案的验证…

STM32用HAL库函数实现硬件IIC

/*出处:【STM32入门教程-2024】第12集 IIC通信与温湿度传感器AHT20(DHT20)_哔哩哔哩_bilibili */ AHT20驱动 这篇笔记我主要介绍代码实现,想要了解原理的请自己看视频,我不过多赘述了。 AHT20通信数据帧格式: ①对照手册上的通…

IFM420-WRDUWZ电动机保护器EOCR-iFM420窗孔0.5-80A

韩国三和,EOCR,SAMWHA,Schneider,施耐德,电机保护器,电动机保护器,电子式电动机保护继电器,电子式过电流继电器,电子式欠电流继电器,电子式电压继电器&#x…

探索大数据混合分层架构:构建智能数据管理平台

随着大数据技术的发展和应用场景的不断拓展,传统的单一数据处理架构已经不能满足复杂多变的业务需求。在这样的背景下,大数据混合分层架构应运而生,成为了构建智能数据管理平台的关键。本文将深入探讨大数据混合分层架构的设计原则、核心组件…

JS事件循环、宏任务与微任务

在JavaScript中,事件循环(Event Loop)是处理异步操作的核心机制。它负责执行代码,处理事件,并在适当的时候调度回调。为了更好地理解JavaScript的执行模型,我们需要深入探讨事件循环、宏任务(Ma…

从文本框限制字符输入,理解代码抽象过程(四次抽象到简单工厂到反射)

这里写目录标题 背景原因抽象过程第一次抽象第二次抽象第三次抽象第四次抽象简单工厂反射 背景 学生信息管理系统中有很多文本框的校验,其中有一点,就是不允许输入过长的信息。 原因 1、文本框校验限制输入长度确保用户内容不超出系统或数据库容量限制…

基于SpringBoot+Vue高校宣讲会管理系统设计与实现

项目介绍: 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装高校宣讲会管理系统软件来发挥其高效地信息…

2024五一劳动节活动策划方案

2024五一劳动节朋克国风养生局(回春集主题)活动策划方案-48P 方案页码:48页 文件格式:pptx 方案简介: 大健康线下活动屡屡出圈 近年来,随着健康意识和生活水平的提升 人们对于自身健康越发关注&#…

面试题:分布式消息中间件 MQ

MQ官网文档: RabbitMQ:https://www.rabbitmq.com/docs RocketMQ:https://rocketmq.apache.org/zh/docs/ Kafka:https://kafka.apache.org/documentation/ DDMQ:https://base.xiaojukeji.com/docs/ddmq 面试题&#xff…

【4103】基于小程序实现的老年人健康管理平台

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:spring…

CIA组织MikroTik软路由攻击场景复现及后门加解密剖析

概述 写文章还是有一段时间了,发布的文章也是获得了不少小伙伴的关注,同时也和圈子里面的小伙伴慢慢的建立起了联系,平时也会时不时的一起探讨一些技术问题。因此,在最近和小伙伴的交流学习过程中,有一个小伙伴提到了…

Java:SpringBoot如何优化启动速度

一、yml中设置懒加载 spring:main:lazy-initialization: true 二、SpringBoot启动类中添加注解 Indexed (Spring5才有该注解) Indexed EnableAsync RestController SpringBootApplication(exclude {WxMaAutoConfiguration.class}) EnableTransactionM…

面试:MYSQL(SQL优化、MYSQL事务)

目录 一、SQL优化 1、如何定位慢查询 (1)方案一:开源工具 (2)方案二:慢日志查询 2、定位到慢查询时,如何优化 3、什么是索引 (1)底层结构 4、聚簇索引&#xff0…

优秀博士学位论文分享:动态三维场景理解与重建

优秀博士学位论文代表了各学科领域博士研究生研究成果的最高水平,本公众号近期将推出“优秀博士学位论文分享”系列文章,对人工智能领域2023年优秀博士学位论文进行介绍和分享,方便广大读者了解人工智能领域最前沿的研究进展。 “博士学位论…