【python基础学习08课_函数的嵌套、内置函数等】

一、函数

1、函数的注释

1)如何写注释
"""
函数的注释 -- 说明这个函数的作用,以及参数的诠释"""三个引号之间可以注释例如:'''这是一段注释'''"""这是一段注释"""

 

2)如何获取注释信息

2、函数的嵌套

函数的嵌套是指在编程中一个函数内部定义或调用另一个函数。这种结构在处理复杂任务时非常有用,因为它允许将大的问题分解成小的、可管理的部分,并保持代码的模块化和可读性。以下是两种常见的函数嵌套形式:1. **函数内部定义另一个函数**:在一个函数内部定义另一个函数是合法的,但内部函数通常只能在外部函数的作用域内被访问。2. **函数内部调用另一个函数**:一个函数可以在其内部调用另一个已经定义的函数。嵌套函数的一些注意事项:- **作用域**:内部函数可以访问外部函数的作用域内的变量,但外部函数不能访问内部函数的局部变量(除非内部函数将其返回或作为参数传递)。- **闭包**:当内部函数访问外部函数的变量时,这种结构称为闭包。闭包在处理异步操作、事件处理、数据封装等方面非常有用。- **递归**:一个函数调用自身也是一种特殊的嵌套,称为递归。递归在处理递归数据结构(如树、图形)或执行分而治之的算法时非常有用。使用嵌套函数可以增加代码的可读性和维护性,但也可能导致性能开销,因为每次调用外部函数时,内部函数都需要重新创建。因此,在设计函数时,需要权衡其带来的好处和潜在的缺点。
1)函数内部调用另一个函数

两个同等级别的函数的调用

2)函数内部定义另一个函数

在函数内部定义函数

内部不调用内部的函数,内部函数就不能执行

在外面调用内部函数,内部函数也不能执行,在外面调用是没有定义的

3、作用域

作用域:我们定义的变量和函数在哪个范围内可以使用{比如:中国的警察只能在中国维护治安,不能在国际上维护治安}变量的作用域:
1.全局变量:在当前文件内定义的变量,可以在文件内的任何地方使用
2.局部变量:在有效的范围内可以使用,一旦出了范围就无法使用注:局部变量可以升级为全局变量 -- 常见的场景:上一个接口的信息如何给下一个接口使用
1)局部变量

局部变量,在作用域之外被调用,会报未被定义

{比如:中国的警察只能在中国维护治安,不能在国际上维护治安,有警察局出警(函数执行),局里的警察(局部变量)才能是上班状态的,才是有意义的}

局部变量,在作用域之内被调用,正常

2)全局变量

要顶着最左边代码行的变量

自己犯的一个错误

使用占位符的时候{}里面没有引用参数,导致报错

3)把局部变量升级为全局变量
3.1)通过global关键字,将局部变量升级为全局变量。

但是这个变量是定义在函数里面的,即使升级为全局变量,也得先调用这个函数才能执行。因为只有在这个函数里,这个变量才存在,执行了这个函数,这个变量才能存在。不执行这个函数,这个变量就不存在。

3.1.1)局部变量所在的那部分代码不执行,这个变量就不存在

在非函数里面也是一样的

不执行,不存在

不执行这个函数,就好报错未被定义这个局部变量

这样先用参数,再调用函数也不行

后用global声明也不行

4)循环里面,会对全局变量进行重定义

如果循环不执行,就不会重定义

4、数学函数

数学函数,了解会用就行
abs()  绝对值
divmod()  返回商和余数
round()  四舍五入[注:银行家算法的问题]
pow()  次方
sum()  求和
min()  最小值
max()  最大值
1)绝对值函数--adb()

2)返回商和余数--divmod()

3)四舍五入--round()
四舍五入[注:银行家算法的问题],规则:奇数-正常的结果;偶数-直接舍弃后面[0~0.5这个范围]的小数

偶数只有小数在0~0.5这个范围的小数会被舍弃,大于0.5的不会被舍弃

 4)次方--pow()

5)sum() 求和

只能对数字类型求和

不能对字符串类型进行加和

6)min()最小值

7)max()最大值

5、匿名函数

了解能看懂即可,用的不多

匿名函数:没有名字的函数
lambda 关键字完成
1)派--pi

2)圆的面积

3)普通函数

print(函数名)=打印函数的内存地址

如果是print(函数名)会打印函数内存地址

如果是print(函数)会报错

自己优化一下

4)匿名函数的写法

报错的情况,调用函数时,没传函数必要的位置参数

只调用,不获取返回值是没有结果的

将位置参数,写上

将位置参数及它的值,写上

6、函数的传递(或叫引用)

函数的调用与引用:
小口诀:有小括号,是调用。没有小括号,是引用。引用函数:直接写函数的名称,不加(),就是引用,就是传递函数的本体(所在的内存地址),例如:fun3(fun2)
---------理解成:只要这个人的所在住址调用函数:函数的名称加上(),就是通过函数的本体,然后调用函数,就会去执行函数内部的代码块,,例如:fun3(fun2())
---------理解成:通过这个人的所在住址,叫这个人去做他的工作什么时候需要引用,什么时候需要调用?1.引用是获取封装好的函数的内存地址
2.当我写用例的时候,如果需要用到这个函数里面的操作,就可以通过这个地址,去执行这个函数
3.主动权都在我手上
1)函数的调用

2)函数的内存地址--本体

函数本体+() =调用这个函数

3)函数的引用--传递函数的本体
3.1) 调用函数B时,直接调用传递的函数A

只有调用函数,函数才会执行。只引用函数,而没有调用该函数,引用的函数是不执行的。

3.2) 调用函数B时,通过参数的形式,调用传递的函数A


因为执行fun(aa=fun2)时,是将fun2的本体传递给aa,  本体+()就等于调用这个函数,所以aa()就相当于fun2()。所以相当于,函数2 是函数3的内部代码块的一部分(2被3引用了--aa())

 

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

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

相关文章

SVN教程-SVN的基本使用

SVN(Apache Subversion)是一款强大的集中式版本控制系统,它在软件开发项目中扮演着至关重要的角色,用于有效地跟踪、记录和管理代码的演变过程。与分布式系统相比,SVN 的集中式架构使得团队能够更加协同地进行开发&…

计算机网络之应用层

域名由点和标号(label)组成, 点分割的即是标号每个标号不超过63个字符,总计不超过255个字符, 并且不区分大小写顶级域名TLD(Top Level Domain)分为三类, 国家顶级域名nTLD, 通用顶级域名gTLD, 基础结构域名ID(Infrastructure Domain). 基础结构域名只有一个即 arpa. 用于反向域…

MyBatis 学习(二)之 第一个 MyBatis 案例

目录 1 配置 MyBatis 方式 1.1 XML 配置文件 1.2 Java 注解配置 1.3. Java API 配置 2 在 MySQL 中创建一张表 3 创建一个基于 Maven 的 JavaWeb 工程 4 编写 User 实体类 5 创建 Mybatis 全局配置文件 6 编写一个 DAO 或 Mapper 接口 7 编写 SQL 映射配置文件&#…

Docker部署前后端服务示例

使用Docker部署js前端 1.创建Dockerfile 在项目跟目录下创建Dockerfile文件: # 使用nginx作为基础镜像 FROM nginx:1.19.1# 指定工作空间 WORKDIR /data/web# 将 yarn build 打包后的build文件夹添加到工作空间 ADD build build# 将项目必要文件添加到工作空间&a…

IPD(集成产品开发)—核心思想

企业发展到一定阶段就会遇到管理瓶颈,IPD流程是一种高度结构化的产品开发流程,它集成了业界很多优秀的产品开发方法论,像搭积木一样的组合成一种非常有效的流程。如果我们能根据企业的规模和行业特点,对全流程的IPD进行合适的裁剪…

【Python】FastAPI 项目创建 与 Docker 部署

文章目录 前言&需求描述1. 本地FastAPI1.1 Python 环境准备1.2 本地 Pycharm 创建FastAPI项目 2. Python FastAPI 部署2.1 服务器配置Python环境2.2.1 下载与配置Git、Pyenv等工具2.2.2 下载与配置Python 2.2 FastAPI 打包成镜像2.2.1 项目准备所需环境文件2.2.2 编写Docke…

【MATLAB】ICEEMDAN_ MFE_SVM_LSTM 神经网络时序预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 ICEEMDAN是指“改进的完全扩展经验模态分解与自适应噪声”(Improved Complete Ensemble Empirical Mode Decomposition with Adaptive Noise),它是CEEM…

行为树入门:BehaviorTree.CPP Groot2练习(叶子节点)(2)

以《行为树BehaviorTree学习记录1_基本概念》练习。 1 SequenceNode顺序控制节点 代码下载 git clone https://gitee.com/Luweizhiyuan2020/ros2_bt.git例程 1.1 sequence 顺序执行 下载版本SequenceNode1。 1.2 ReactiveSequence 异步执行 注意: ①only a…

金三银四面试必问:Redis真的是单线程吗?

文章目录 01 Redis中的多线程1)redis-server:2)jemalloc_bg_thd3)bio_xxx: 02 I/O多线程03 Redis中的多进程04 结论▼延伸阅读 由面试题“Redis是否为单线程”引发的思考 作者:李乐 来源:IT阅读…

工业锅炉物联网:HiWoo Cloud为工业能源转型注入新动力

随着全球工业化的快速发展,工业锅炉作为工业生产的“心脏”,其能源效率和运行安全性越来越受到关注。然而,传统的工业锅炉管理往往依赖于人工监控和定期维护,这种方式不仅效率低下,而且难以确保设备的持续高效运行。在…

WebServer -- 日志系统(下)

目录 🌼整体思路 🎂基础API fputs 可变参数宏 __VA_ARGS__ fflush 🚩流程图与日志类定义 流程图 日志类定义 🌼功能实现 生成日志文件 && 判断写入方式 日志分级与分文件 🌼整体思路 日志系统分两部…

Figma 最新版下载:无需激活码,轻松安装!

从事设计工作,怎么能没有设计工具呢?我相信许多设计师也必须使用Figma这样的软件,真的可以让我们的设计工作更有效率,但我相信你也发现Figma属于外国软件,自然语言也是英语,直到现在没有中文版本&#xff0…

【Kubernetes】安装K3S

目录 前言一、原理单体架构高可用架构 二、初始化1.配置yum源2.关掉防火墙3.关掉selinux4. 修改内核参数5.关掉swap交换分区 三、安装master节点1. 安装container2.启动master服务 四、安装node节点五、卸载六、总结 前言 各位小伙伴们,大家好,小涛又来…

自定义神经网络四之编写自定义神经网络

文章目录 前言神经网络组件代码整体的项目结构Tensor张量Layers层NeuralNet神经网络Loss损失函数Optim优化器data数据处理train训练 神经网络解决实际问题实际问题训练和推理代码 总结 前言 自定义神经网络一之Tensor和神经网络 自定义神经网络二之模型训练推理 自定义神经网络…

关于电脑一天24小时多少度电电脑的一天用电量计算

随着这几年物价的上涨,一些地区的电价越来越高,而我们经常需要使用电脑,那么一台电脑一天24小时用多少度电呢? 如何计算电脑一天的用电量? 让我们跟随小编来了解更多吧。 1、功耗、主机箱功耗 现在的计算机中&#xf…

(Linux学习一):Mac安装vmWare11.5,centOS 7安装步骤教程

一。下载vmware 官网地址:下载地址 由于我的电脑系统是Mac 10.15.6版本系统,我下载的是VMware Fusion 11.5版本,13是最新版本不支持安装需要系统在11以上。 百度网盘下载地址: VMware Fusion 11 VMware Fusion 12 VMware Fusion 13 下载需要…

插值、逼近、拟合、光顺

插值 插值(Interpolation)是数学和计算科学中的一个重要概念,它指的是通过已知的一系列数据点,构造一个函数或曲线,并据此估计未知数据点的值。这个过程通常发生在已知数据点之间,用于预测或估算在这些已知…

Android Duplicate class 排除重复类

一、起因: 在迭代开发的时候,发现2个ijk很多类重复。但又2个库实现的功能是不一样,目前不能合并。但又想保留2个功能。需要排除其中一个库。 二、报错如何下图: 三、解决方法: 3.1 在terminal 也就是命令行处输入 …

Project_Euler-29 题解

Project_Euler-29 题解 题目 思路 如果暴力破解的话会有一个问题,那就是数值过大的问题,那我们就需要通过对数据结构来进行操作,这样的话会让代码变得很臃肿。 优化思路 其实,对于一个数值,我们并不需要要将其计算出…

Mysql数据库管理系统学习笔记1——sql语句,DBMS,数据库的分类

mysql是一种数据库管理系统(DBMS),data base manage system sql语句即为“structured query language”,结构化查询语言 数据库的分类:关系型数据库(RDBMS)与非关系型数据库 对于一些具有相同…