Python函数嵌套&匿名函数&跳转表

函数嵌套

内部函数整个函数体都在外部函数的作用域;如果在外部没有对这个函数的引用,那么除了在函数体内,任何地方都不能调用这个函数

python 复制代码
def func1():
    print('1')
    def func2():
      	print('2')

如果我们想使用函数内部定义的func2(),可以采用前项声明的方式

python 复制代码
def func2():
	pass
def func1():
    print('1')
    global func #声明局部函数为全局函数对象
    def func2():
      	print('2')

匿名函数

  • 匿名函数 (lambda表达式):
    • 除了def语句之外,我们还可以使用lambda表达式创建函数
    • 这样创建出来的函数,需要额外使用变量名保存
    • 匿名函数 一般用来创建简单 函数,或制作跳转表

语法格式

python 复制代码
lambda x1,x2,x3... : exper

参数可以有多个,返回值为冒号后面表达式所返回的结果

python 复制代码
>>> f = lambda x,y : x+y
>>> f(1,2)
3

缺省参数 也可以在lambda中使用;注意缺省参数定义顺序

python 复制代码
>>> f = lambda x,y=1 : x+y
>>> f(10)
11
>>> f = lambda x=1,y : x+y #缺省参数定义顺序一定是从右向左
  File "<stdin>", line 1
SyntaxError: non-default argument follows default argument

跳转表

  • 跳转表 (jump table):函数方法的列表字典,能够按照需要执行相应的动作
python 复制代码
L = [ lambda x:x*2  , lambda x:x*3 , lambda x:x*4] #含有三个lambda函数的列表
for f in L:
	print(f(2))
相关推荐
高木木的博客6 小时前
数字架构智能化测试平台(1)--总纲
人工智能·python·nginx·架构
zhangchaoxies6 小时前
golang如何使用SQLx原生SQL查询_golang SQLx原生SQL查询使用方法
jvm·数据库·python
m0_743623926 小时前
mysql如何优化InnoDB缓冲池大小_mysql缓冲池内存调优
jvm·数据库·python
m0_617881426 小时前
如何操作 XML 数据_XMLTYPE 与 EXTRACT 函数解析节点
jvm·数据库·python
qq_334563556 小时前
golang如何实现SSTable持久化_golang SSTable持久化实现要点
jvm·数据库·python
2301_777599376 小时前
Redis怎样应对大规模集群的重启风暴_分批次重启节点并等待集群状态恢复绿灯后再继续操作
jvm·数据库·python
qq_452396236 小时前
【工程实战】第十篇:性能监控集成 —— 自动化脚本的“副产品”:不仅仅是功能测试
python·功能测试·自动化
来自远方的老作者6 小时前
第10章 面向对象-10.4 继承
开发语言·python·继承·单继承·多继承·super函数
解救女汉子6 小时前
MySQL并发写入如何避免锁竞争_使用队列缓冲与批量插入优化
jvm·数据库·python
qq_342295826 小时前
HTML函数开发需要SSD吗_SSD对HTML函数开发效率影响【详解】
jvm·数据库·python