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…

LangChain Routing 学习笔记

LangChain Routing 学习笔记 0. 引言1. 使用提示词2. 使用 RunnableLambda 0. 引言 在使用大语言模型开发应用时,其中一个场景就是根据不同的输入,调用(或者说路由到)不同的逻辑。这就好比我们以前开发时经常使用的if ... else .…

搜索引擎的定义与运行原理

搜索引擎是一种用于在互联网或特定数据源中搜索信息的工具,它通过自动化程序(称为爬虫或蜘蛛)从网页或数据库中收集信息,并根据用户输入的关键词或短语返回相关的搜索结果。其运行原理可以简单概括如下: 爬取网页&…

cf914div2C

考虑相邻的两堆石子如果是2 3,那么先手可以选2,然后3变成1,这时后手只能选1,考虑2 4的情况,先手选1,剩下1 3,后手只能选1,剩下一个2,先手选1,剩1,后手只能选1.所以只要第一个数不为1的情况下,先手必胜,那么问题变成了找到mex(第一个未出现的数字),如果这个数字为偶数,先手是Bob…

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

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

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

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

dmdbchk检查数据库完整性正确性(达梦数据库)

dmdbchk检查数据库完整性正确性- - 达梦数据库 1 简介2 使用 dmdbchk3 dmdbchk 报告解读4 达梦数据库学习使用列表 1 简介 dmdbchk 是 DM 提供的用于检查数据库完整性、正确性的命令行工具。在服务器正常关闭后的脱机情况下,用户可以使用 dmdbchk 对数据库进行校验…

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

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

IOT病毒分析

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

彻底理解Python相关的排序方法

左手编程,右手年华。大家好,我是一点,关注我,带你走入编程的世界。 公众号:一点sir,关注领取python编程资料 在Python中,列表排序是一项基础而重要的任务,它允许你对一系列元素进行有…

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

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

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

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

【后端】python数组去重和过滤的使用方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、数组介绍二、python数组去重和过滤1.数组去重2.数组过滤 三、总结 前言 随着开发语言及人工智能工具的普及,使得越来越多的人会主动学习使用一…

python数字大小写转换程序

目录 一.前言 二.完整代码 三.分析 一.前言 大小写数字又称大小写计数词,是一种用于书写数字的表示方式,它区别于阿拉伯数字。大小写数字主要用于正式文件、日期、节日和一些传统的文化表达中。 二.完整代码 info=[零,一,二,三,四,五,六,七,八,九] data=input("请…

STM32用HAL库函数实现硬件IIC

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

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

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

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

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

90天玩转Python—19—Python面向对象编程:类与对象的详细介绍和实例

90天玩转Python系列文章目录 90天玩转Python—01—基础知识篇:C站最全Python标准库总结 90天玩转Python--02--基础知识篇:初识Python与PyCharm 90天玩转Python—03—基础知识篇:Python和PyCharm(语言特点、学习方法、工具安装) 90天玩转Python—04—基础知识篇:Pytho…

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

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

【信息系统项目管理师知识点速记】范围管理:收集需求

9.4 收集需求 收集需求是为实现目标而确定、记录并管理干系人的需要和需求的过程。本过程的主要作用是为定义产品范围和项目范围奠定基础。本过程仅开展一次或仅在项目的预定义点开展。 9.4.1 输入 立项管理文件 商业论证产生的文件,描述了为满足业务需要而应该达到的必要、期…