函数基础——函数对象、函数嵌套及闭包函数

<Zhuuu_ZZ>HIVE(十一)函数 Hive内置函数一 Hive函数分类二 字符函数二 类型转换函数和数学函数三 日期函数四 集合函数五 条件函数六 聚合函数和表生成函数6.1 聚合函数6.2 表生成函数:输出可以作为表使用 一 Hive函数分类 从输入输出角度分类 标准函数:一行数据中的一列或多列为输入,结果为单一值 聚合函数:多行的零列到多列为输入,结果为单一值 表生成函数:零个或多个输入,结果为多列或多行 从实现方式分类 内置函数 自定义函数 UDF:自定义标准函数 UDAF:自定义聚合函数 UDTF:自定义表生成函数 阅读详情
函数对象(函数名)

​ 函数对象指函数可以被当做“数据”来处理。

  • 函数名可以当成变量赋值

    def index():
        print('from index')
    
    a = index
    a()
    
    print(a)  # 函数名就是内存地址
    
  • 函数名可以当成函数的参数

    def index():
        print('from index')
    
    def func(a):
        # a = index
        a()
        print('from func')
    
    
    func(index)
    
    # 执行结果:
    # from index
    # from func
    
  • 函数名也可以当成函数的返回值

    def index():
        print('from index')
    
    
    def func():
        print('from func')
        return index
    
    res = func()
    res()
    
  • 函数名可以作为容器类型的元素

    def index():
        print('from index')
    
    
    l = [1, 2, 3, index]
    print(l)
    
练习:
# 注册功能
def register():
    print('注册')

# 登录功能
def login():
    print('登录')

# 转账功能
def transfer():
    print('转账')

# 购物功能
def shopping():
    print('购物')

# 提现功能
def withdraw():
    print('提现')


func_dict = {
    '1': register,
    '2': login,
    '3': transfer,
    '4': shopping,
    '5': withdraw
}
while True:
    print("""
        1. 注册
        2. 登录
        3. 转账
        4. 购物
        5. 提现
    """)

    choice = input('请输入序号:>>>').strip()
    if choice in func_dict:
        func_name = func_dict[choice]  # 得到的就是函数的内存地址,函数名
        func_name()
    else:
        print('请好好输入')
函数的嵌套定义

​ 即在函数里面定义其他函数。

示例:

def all_func(type):
    def register():
        print('注册')

    def login():
        print('登录')

    def transfer():
        print('转账')

    def withdraw():
        print('提现')

    if type == 1:
        register()
    elif type == 2:
        login()
    elif type == 3:
        transfer()
    elif type == 4:
        withdraw()
    else:
        print('请重新输入!')


# all_func(1)
all_func(2)
函数的嵌套调用

​ 即表示在函数里面调用其他函数。

示例:

# 1.比较两个数的大小
def my_max(a, b):
    if a > b:
        return a
    return b


# my_max(1, 2)


# 2. 比较4个数的大小
def many_max(a, b, c, d):
    # 先两两比较,a,b
    res = my_max(a, b)
    res1 = my_max(res, c)
    res2 = my_max(res1, d)
    return res2

print(many_max(1,2,3,4))
闭包函数

​ 闭:指的是定义在函数内部的函数

​ 包:指的是内嵌函数包含对外部函数作用域(而非全局作用域)中的变量的引用。

​ 两者同时满足才能称之为“闭包函数”。可以说闭包函数为传参的第二种方式。

  • 传参的第一种方式:通过形参传参

    def index(a,b):
        print(a,b)
        
    index(1,2)
    
  • 传参的第二种方式:闭包函数

    def outer(a, b):
        # a = 10
        # b = 100
        def my_max():
            if a > b:
                return a
            return b
        return my_max
    
    
    res = outer(2, 20) # res => my_max的内存地址
    print(res())  # res()即等同于my_max()
    print(res())  # my_max()
    # 只需要传参一次,就可以一直使用
    
【Docker】Docker安装Hadoop分布式集群 hadoop目录安装在:/usr/local/hadoop-2.7.0/etc/hadoop。访问Hadoop102:9870,查看是否能够看到hdfs界面。访问hadoop103:8088,查看能够看到yarn界面。在yarn上可以看到执行情况。 阅读详情

相关推荐

Windows 11任务管理器隐藏技能:一眼揪出内存泄漏的“元凶”(分页/非分页缓冲池详解)

本文详细介绍了Windows 11任务管理器中隐藏的分页缓冲池和非分页缓冲池功能,帮助用户精准定位内存泄漏问题。通过启用隐藏列、解读数据异常信号,并结合实战案例和高级工具推荐,为开发者和IT运维人员提供了高效的内存问题诊断与解决方案。

weixin_29284885的博客 627

16.函数对象+函数嵌套+闭包函数

1.函数对象(可以把函数当成变量去用) #func=内存地址 def func(): print('from func') 1.可以赋值 f=func print(f,func) #<function func at 0x0000000002211A60> <function func at 0x0000000002211A60> f() # from func 2.可以当做函数的参数传入 def func(): print('from func')

xueluoyihai的博客 135

OMNET++ INET框架学习教程(一)

在自组网学习的道路上摸石头过河,帮你快速入门OIMNET++平台下的INET框架。

NLDwangzhe的博客 6565

利用python开发银行储蓄_用python实现银行转账功能

#coding:utf-8importMySQLdb#调用MySQL数据库模块conn=MySQLdb.Connect(host='.........',#输入数据库的IP地址port=3306,#输入数据库的使用端口user='......',#输入数据库用户账号passwd='......',#输入数据库用户密码db='......',...

weixin_39626586的博客 366

新能源知识库(98)SOC曲线介绍

​:一条异常的健康SOC曲线,往往能提前反映出电池性能的衰退或系统存在的隐患。BMS和EMS通过实时跟踪SOC值,能在电池电量过高(如>95%)时停止充电,电量过低(如<20%)时停止放电,从而避免因过度充放电引发的。​:OCV-SOC曲线上较为平坦的部分(例如,磷酸铁锂电池通常在20%-80% SOC范围)。​:在光伏、储能、电网协同的系统中,SOC曲线是能量调度的核心依据。​:电池的寿命很大程度上取决于它的工作方式。​:利用电池静置后电压与SOC的对应关系来估算,较准确但需要电池静置,无法实时使用。

竹君子之家 924

车辆动力学从入门到进阶之路(传统篇)

新手如何入门车辆动力学开发领域,本文为您引路!

CrazyRabbit的博客 1万+

函数的嵌套以及闭包概念

函数的嵌套以及闭包的概念 函数的嵌套 def outer(x): m = 100 print('我是outer函数') def inner(): # inner函数定义在outer函数内部 print('我是inner函数') if x > 18: inner() return 'hello' outer(21) 闭包的概念 如果在一个函数里,对外部作用域(但不是全局作用域)的变量进行引用,那么内部函数就被认为是闭包(

weixin_50077855的博客 301

YOLOv8改进 - 注意力篇 - 引入CAA注意力机制

YOLOv8改进 - 注意力篇 - 引入CAA注意力机制

浪子L的博客 5223

C++:函数对象(函数符)

C++:函数对象(函数符)1、什么是函数对象2、重载了()运算符的类对象 1、什么是函数对象 函数对象也叫函数符,函数符是可以以函数方式与()结合使用的任意对象。这包括函数名、指向函数的指针和重载了()运算符的类对象。 上面这句话的意思是指:函数名、指向函数的指针和重载了括号运算符的类对象与括号结合,从而以函数方式实现某种功能。 2、重载了()运算符的类对象 该示例摘自《C++ Primer》 第...

Mr.Andy的博客 8245

24、企业治理、风险与合规:精益思维的应用与实践

本文探讨了如何运用精益思维优化企业治理、风险与合规(GRC)流程,分析了职责分离与合规流程的误区,提出了预防性与检测性控制措施的合理搭配,并通过价值流映射、减少合规反馈循环等方法实现流程优化。以Etsy的PCI-DSS实施为例,展示了如何在满足法规要求的同时保持创新活力。文章还强调了构建协作型GRC文化的重要性,并展望了未来GRC的发展趋势,包括数字化转型、全球化风险管理及与可持续发展的结合。

solidity8miner的博客 103

从入门到精通:Cursor使用全攻略

Cursor是一款基于VSCode深度定制的AI编程工具,由Anysphere公司开发。它将AI技术与代码开发深度融合,能够理解自然语言指令并生成高质量代码,支持代码补全、跨文件上下文理解等功能。本文详细介绍了Cursor的安装设置、界面导航、基本操作和Composer模式等核心功能,并提供了高效提示词写作技巧和实际应用案例(如浏览器插件开发、复杂表单组件构建等)。文章还总结了使用注意事项和常见问题解决方案,展望了AI编程工具的发展前景。Cursor通过智能代码生成和项目理解能力,显著提升了开发效率,适合各

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 6457

python函数嵌套例子_Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】...

本文实例讲述了Python函数基础用法。分享给大家供大家参考,具体如下:一、什么是命名关键字参数?格式: 在*后面参数都是命名关键字参数。特点:1、约束函数的调用者必须按照Kye=value的形式传值。2、约束函数的调用者必须用我们指定的Key名。def auth(*args,name,pwd):print(name,pwd)auth(pwd='213',name='egon')def regis...

weixin_39703926的博客 125

Python 爬虫实战:亚马逊 + eBay 商品信息跨平台抓取(价格 / 销量 / 评价对比)

亚马逊和 eBay 是全球知名的电商平台,拥有海量的商品信息。对于消费者来说,比较不同平台上的商品价格、销量和用户评价可以帮助他们找到性价比最高的商品。对于商家而言,了解竞争对手的商品信息有助于优化自身的产品策略和定价策略。然而,手动在两个平台上逐一比较商品信息是非常耗时且低效的。因此,开发一个能够自动抓取并对比这两个平台商品信息的爬虫工具具有重要的实际意义。

yansideyucsdn的博客 617

python命名空间和闭包_Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】...

本文实例讲述了Python函数基础用法。分享给大家供大家参考,具体如下:一、什么是命名关键字参数?格式: 在*后面参数都是命名关键字参数。特点:1、约束函数的调用者必须按照Kye=value的形式传值。2、约束函数的调用者必须用我们指定的Key名。def auth(*args,name,pwd):print(name,pwd)auth(pwd='213',name='egon'...

weixin_32285045的博客 152

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】

本文实例讲述了Python函数基础用法。分享给大家供大家参考,具体如下: 一、什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数。 特点: 1、约束函数的调用者必须按照Kye=value的形式传值。 2、约束函数的调用者必须用我们指定的Key名。 def auth(*args,name,pwd): print(name,pwd) auth(pwd='213',name='egon'...

python函数学习教程 2446

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

python函数的嵌套调用_Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】...

本文实例讲述了Python函数基础用法。分享给大家供大家参考,具体如下:一、什么是命名关键字参数?格式: 在*后面参数都是命名关键字参数。特点:1、约束函数的调用者必须按照Kye=value的形式传值。2、约束函数的调用者必须用我们指定的Key名。?123456def auth(*args,name,pwd):print(name,pwd)auth(pwd='213',name='egon')de...

weixin_39607837的博客 232

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python基础----函数的定义和调用、return语句、变量作用域、传参、函数嵌套、函数对象、闭包、递归函数...

1、函数的定义:   函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。   函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 定义一个函数:   你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以def关键词开头,后接函数...

dejiong3425的博客 215

python嵌套函数return作用_python基础----函数的定义和调用、return语句、变量作用域、传参、函数嵌套、函数对象、闭包、递归函数...

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。定义一个函数:你可以定义一个由自己想要功能的函数,以下是简单的规则:函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间。圆括号...

weixin_39754398的博客 318

Python闭包和修饰器

装饰器是Python中另一个强大的功能,它可以在不修改原函数的基础上增加新功能。闭包是Python中一个重要的概念,涉及嵌套函数和变量的作用域。

gs1we1的博客 590

python之嵌套函数与闭包

函数基础 关于函数基础,可以查看我的另一篇博客:http://yunjianfei.iteye.com/blog/2186064 与本文相关的,有两个重要概念:变量作用域(scope)与生命周期(lifetime) 如果对于这两个概念有所疑惑,可以先去了解一下。   嵌套函数 python是允许创建嵌套函数的,也就是说我们可以在函数内部定义一个函数,这些函数都遵循各自的作用域和生命周...

Dreaming 1067

闭包案例解析:this指向、参数传递及作用域链的巧妙运用

本文通过四个闭包案例,深入探讨了JavaScript中this的指向规则、嵌套函数中this的恒定指向、闭包与this的巧妙结合以及闭包与参数传递的机制,揭示了闭包在作用域链和参数传递中的重要作用,展现了JavaScript函数式编程的灵活性和强大功能。

前端基地 879

函数对象、嵌套、闭包函数、装饰器

名称空间的作用域 作用域:名称空间所能够作用的范围 内置名称空间 程序任何阶段任何位置均可使用(全局有效) 全局名称空间 程序任何剪短任何位置均可使用(全局有效) 局部名称空间 一般情况下只在各自的 局部名称空间中有效 global与nonlocal关键字使用 x = 111 def index(): global x x = 222 index() print(x) # 222 name_list...

jack_fk的博客 394

函数基础

目录 函数基础 1.函数体系 1.1什么是函数? 1.2为何用函数? 1.3如何用函数? 2.定义函数 2.1无参函数 2.2有参函数 2.3空函数 3.函数的返回值...

weixin_30732825的博客 142

函数对象、函数嵌套、名称空间与作用域、装饰器

一 函数对象 1 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 2 利用该特性,优雅的取代多分支的if def foo(): print('foo') def bar(): print('bar') dic={ 'foo':foo, ...

weixin_30756499的博客 161
上一篇: 函数基础——名称空间及其作用域
下一篇: 函数进阶——装饰器
Jakey_src
博客等级 码龄9年 10粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值