Python学习基础笔记十六——函数嵌套

news2024/11/24 20:33:33

1、函数的嵌套调用

def max(a, b):
    if a > b:
        return a
    else:
        return b


def the_max(x, y, z):   # 函数的嵌套调用
    c = max(x, y)
    return max(c, z)


print(the_max(1, 2, 3))

2、函数的嵌套定义:

a = 1


def outer():
    a = 1

    def inner():
        b = 2
        print(a)
        print('Inner')

        def inner2():
            global a
            a += 1
            print(a, b)
            print('Inner2')

        inner2()

    inner()


outer()

说明:

1)内部函数可以使用外部函数的变量;

2)不可变数据类型的修改会报错;

3)global,只跟全局变量有关。函数定义的局部变量没有关系;

3、nonlocal关键字:

a = 1


def outer():
    a = 1

    def inner():
        b = 2
        print(a)
        print('Inner')

        def inner2():
            nonlocal a
            a += 1
            print(a, b)
            print('Inner2')

        inner2()

    inner()


outer()

说明:

1)nonlocal只能用于局部变量, 找上层中离当前函数最近一层的局部变量;

2)声明了nonlocal的内部函数的变量的修改会影响到当前函数最近一层的局部变量。

2)nonlocal对全局无效,内部也只是对最近的一层有影响。

4、函数名的本质:

函数名本质上就是函数的内存地址。

def func():
    print('in func')


f = func  # 函数名可以赋值

print(f)

结果:

计算机中所有的变量本质上都是内存地址。

例2:

def func():
    print(123)


func2 = func

# func2()

li = [func, func2]   # 函数名可以作为容器类型的容器

for i in li:
    i()

例3:

def func():
    print(123)


def chang(f):   # 将函数名作为函数的参数,传给一个函数
    f()         # 然后执行这个函数名函数
    return f    # 函数名可以作为函数的返回值


ret = chang(func)
print(ret)

那么,我们将函数名看作是一个第一类对象。

第一类对象(first class object)  指:

1)可以在运行期间创建;

2)可以作为函数参数和返回值;

3)可以存入变量的实体。

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

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

相关文章

【GlobalMapper精品教程】033:影像地图羽化方式详解

在Globalmapper中,可以很方便的对影响进行多种羽化值设置。 文章目录 1. 不要羽化此图层2. 沿一个或多个边缘羽化3. 羽化到有效数据的多边形覆盖4. 在当前选定的多边形内羽化5. 裁剪到选定的边界,而不是羽化6. 在多边形外部羽化,而不是内部加载配套案例数据包中的data033.ra…

Java基于springboot+vue的家用电器销售购物商城系统 前后端分离

开发背景和意义 随着人们生活的改变,家电基本在家家户户都存在,常用的家电例如冰箱,洗衣机,电视机,空调等设备可以让人们的生活方式变的更加快捷舒适,通常情况下人们购买家电的话都是到指定的家电销售场所…

带你全方位了解光谱共焦位移传感器

任何一个行业的产生和发展都离不开科学技术的进步,这也是市场需求量不断扩大产生的对行业的促进,促使相关人员对产品的不断更新换代,光谱共焦位移传感器的发展也是发生着日新月异的变化。 光谱共焦位移传感器原理: 一束白光&#…

vue基于 input 实现密码的显示与隐藏功能

目录前言:一、准备图标二、Vue程序界面的展示三、代码总结:前言: 大家都知道,一般情况下,输入框的密码我们是看不到密码的,只有当我们点击查看密码的小图标时,密码才会显现出来,实现…

3D深度相机---结构光

去年的仪器仪表的课有汇报,我还专门为3D深度像机做了个调研,一直用inter realsense的,最近老师让看结构光方案的,正好总结一下。 1. 结构光(Structured-light) 由于基于双目立体视觉的深度相机对环境光照强度比较敏感&#xff0…

台式电脑怎么格式化重装系统

我们都知道电脑重装系统默认是会格式化磁盘的,那么如果是自己选择需要格式化的其它磁盘需要怎么操作呢?一般我们都是在pe里面手动格式化磁盘,这样就能避免直接格式化导致的某些问题了,下面就来讲讲台式电脑怎么格式化重装系统吧。…

[信息系统项目管理师-2023备考]信息化与信息系统(二)

目录 一、软件工程 1.需求 1.1 需求分类 1.2 需求分析 2.UML 2.1 类图 2.2 对象图 2.3 构件图 2.4 组合结构图 2.5 用例图 2.6 顺序图 2.7 通信图 2.8 定时图 2.9 状态图 2.10 活动图 2.11 部署图 3.软件架构 4.软件设计 4.1 设计模式分类 4.2 能力成熟度模…

Docker:入门

目录 一、Docker简介 二、Docker安装及环境配置 准备工作 ①通过 uname -r 命令查看你当前的内核版本 ②使用 root 权限登录 Centos。确保 yum 包更新到最新 ③卸载旧版本(如果安装过旧版本的话) ④安装需要的软件包, yum-util 提供yum-config-manager功能&…

统计信号处理基础 习题解答6-11

题目&#xff1a; 考虑WSS中估计DC电平问题&#xff0c;给定 其中 是零均值WSS随机过程&#xff0c;ACF为 &#xff0c;估计A。建议在 时用图6.5所示的FIR滤波器的输出来估计A。注意估计量为&#xff1a; 输入 假定在n<0 时为零。为了得到更好的估计量&#xff0c;我们希望…

近邻法总结

目录1.最近邻法2.k-近邻法3.近邻法的快速算法4.剪辑近邻法5.压缩近邻法6.错误率分析1.最近邻法 算法思想 对于一个新样本&#xff0c;把它逐一与已知样本比较&#xff0c;找出距离新样本最近的已知样本&#xff0c;以该样本的类别作为新样本的类别。算法描述 2.k-近…

【MySQL入门实战1】-数据库三大范式

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&#x1f61…

[oeasy]python0024_ 输出时间_time_模块_module_函数_function

输出时间 回忆上次内容 ​print​​函数 有个默认的 ​​end参数​ ​​end参数​​ 的值可以是任意字符串​​end参数​​ 的值会输出到结尾位置​​end参数​​ 的默认值是 ​​\n​​ 如果​​end​​是空串(​​end""​​) 意味着输出后不自动换行我可以手动在…

自制肥鲨HDO2电源延长线,支持3S~6S动力电池

自制肥鲨HDO2电源延长线&#xff0c;支持3S~6S动力电池1. 问题源由2. 破题思路2.1 10元大钞搞定2.2 两个毛爷爷搞定3. 解决方案4. 最终延长线产出4.1 裸照4.2 成品1. 问题源由 源由&#xff1a; 电池盒电源线接触不良。 肥鲨眼镜的电源盒问题由来已久&#xff0c;而且主要问题…

NNDL实验 知识点梳理

目录 实验内容 编程基础 机器学习基础 FNN CNN RNN 网络优化与正则化 扩展实验 建议自学实验 实验基本步骤 实验涉及知识点 知识点相关细节 更多细节 实验内容 编程基础 NNDL 实验一 numpy NNDL 实验二 pytorch 机器学习基础 NNDL 实验三 线性回归 NNDL 实验…

笔记(上):mysql-DuplicateUpdate和java的threadpool的“死锁“

今天给大家讲讲最近2个有意思的issue&#xff0c;分享一下我学到的 mysql DuplicateUpdate的用法要注意的点java的threadpool使用不当会造成“死锁”问题 mysql DuplicateUpdate的用法要注意的点 有个issue说遇到了一个这样的问题&#xff0c; 这个朋友使用我开源的job调度框…

软件包管理器yum与编辑器vim的使用

目录yum的背景yum的生态yum的本土化&#xff08;换源&#xff09;yum的使用查看软件包安装软件卸载软件vim的使用Vim的基本基本介绍Vim的模式切换Vim的光标定位Vim的文本复制Vim的文本编辑Vim的底行模式的操作vim的配置管理员权限(sudo)的配置yum的背景 yum的生态 在日常的生…

Node.Js基础知识

Node.Js架构 Natives modules 当前层内容由JS实现提供 应用程序可直接调用库&#xff0c;例如&#xff1a;fs、path、 http等JS语言无法直接操作底层硬件设置&#xff08;–》Builtin modules 胶水层&#xff09; Builtin modules 胶水层 在V8引擎下&#xff0c;主要是帮助…

geomtextpath | 成功让你的ggplot注释拥有傲人曲线!~

1写在前面 最近的世界杯结果的确是让人大跌眼镜&#x1f576;️, 日本队&#x1f1ef;&#x1f1f5;先后击败世界杯冠军, 德国队&#x1f1e9;&#x1f1ea;和西班牙队&#x1f1ea;&#x1f1f8;, 韩国队&#x1f1f0;&#x1f1f7;逆转葡萄牙&#x1f1f5;&#x1f1f9;, 踩着…

定时轮询-长轮询-websocket

一般网页 点击网页后&#xff0c;前端向后端 发送请求&#xff08;使用http协议&#xff09; 那么如何实现后端主动先前端发送数据&#xff0c;比如&#xff1a;网页游戏 聊天室 文件共享 扫码登入 http定时轮询 &#xff08;轮询&#xff09; 在前端代码中每隔一段时间向后…

宝塔面板Linux

目录 1.宝塔面板简介 2.安装与连接 3.安装软件 4.端口管理 5.宝塔面板设置 这里主要讲的是宝塔面板的主要操作&#xff0c;本节应与xshell与xftp共同使用 1.宝塔面板简介 宝塔面板是一款服务器管理软件&#xff0c;支持windows和linux系统&#xff0c;可以通过Web端轻松…