本文重点在于:Python允许函数的嵌套定义,这在有些情况下会带来很多方便。

感谢中国石油大学(华东)计算机与通信工程学院李昕老师提供问题。

假设有个列表,内容如下:

>>> x = list(range(20))

>>> x

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

现在我们想得到一个新列表,其中每个值都是x中元素值加5,这很容易用Python内置函数map()实现,例如:

>>> list(map(lambda i: i+5, x))

[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]

如果我们想看看哪些元素值大于5,可以像下面这样来做:

>>> list(map(lambda i: i>5, x))

[False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True]

好了,现在我们有个新需求,就是让这个固定的5是可变的,不使用常数,而是改为一个变量,同时保持问题性质不变,这样用起来就更加灵活了。但问题在于map()函数只能接收一个函数和1个或多个序列作为参数,并不能直接满足我们的需求。

当当当当,其实我们这样来做:

>>> def myMap(lst, value):

return map(lambda i: i>value, lst)

>>> list(myMap(x, 5))

[False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True]

>>> list(myMap(x, 10))

[False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True]

针对上面简单的需求,我们想要的功能已经实现了,如果我们要做的处理过于复杂而无法使用一个lambda表达式来实现,就只好拿出我们的大杀器了:嵌套函数定义。

>>> def myMap(lst, value):

def func(x):

return x>value

return map(func, lst)

让我们试一下好用不好用:

>>> list(myMap(x, 5))

[False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True]

>>> list(myMap(x, 10))

[False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True]

和我们想要的功能完全一致。

温馨提示:单击文章顶部作者名字旁边浅蓝色的“Python小屋”进入公众号,关注后可以查看更多内容!

欢迎转发给您的朋友,或许这正是Ta需要的知识!

Python函数嵌套定义的洪荒之力相关推荐

  1. 微课|Python程序设计开发宝典(5.1.2节):函数嵌套定义1

    适用教材:董付国著,<Python程序设计开发宝典>,清华大学出版社,2017 第5章  函数 5.1.2  函数嵌套定义.可调用对象.修饰器 京东购买链接:https://item.jd ...

  2. python基础之函数嵌套定义

    博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏. ...

  3. python函数参数定义顺序_18 Python - 函数定义与参数

    12 函数定义与参数 01函数 (1)定义: def 函数名(参数1,参数2--): 函数体 return 结果 (2)调用: 函数名(实际参数) (3)函数作用: 最大化代码重用, 最小化代码冗余, ...

  4. python函数参数定义不合法_下列哪种函式参数定义不合法?

    python 函数参数定义有四类: 1,必选参数:调用函数时候必须赋值的参数. a,须以正确的顺序传入函数 b,调用时的数量必须和声明时的一样 def exa(x): return x #b作为参数进 ...

  5. python函数定义及调用-python函数的定义和调用 | 酷python

    python函数的定义与调用 在python中 ,函数是一个组织好的 ,可以重复使用的代码段 ,函数可以提高代码的重复利用率 ,原则上一个函数只实现一个单一的功能 ,这样能增强程序的模块性, pyth ...

  6. python函数参数定义_python函数定义中的5种参数

    python函数参数定义 Python函数定义中的5种参数类型: (5 Types of Arguments in Python Function Definition:) default argum ...

  7. python函数嵌套调用的实现

    函数嵌套是指在一个函数中定义了或者调用另外一个函数. 下面分别简单举例描述一下在一个函数中定义和调用另外一个函数: 1.在一个函数中定义函数 def outfun():def infun1():pri ...

  8. Python函数的定义和使用教程

    def test(x): # x代表形参'''2*x+1:param x:整形数字:return:返回计算结果'''y = 2*x+1return y p = test(3) # test()表示运行 ...

  9. Python函数的定义和使用

    def test(x): # x代表形参'''2*x+1:param x:整形数字:return:返回计算结果'''y = 2*x+1return y p = test(3) # test()表示运行 ...

最新文章

  1. Android客户端多线程实例分析
  2. python下 help()使用方法
  3. weexpack占据的存储空间
  4. Spring Batch –使用JavaConfig替换XML作业配置
  5. MySQL的索引优化
  6. bootstrap-table 行合并和列合并,以及固定列宽度等问题
  7. android8 呼吸灯,红米note8pro呼吸灯颜色如何设置?
  8. Bailian2911 受限完全平方数【暴力】
  9. VBS代码--很恶心的整人效果
  10. 搭建webservice服务报错求解
  11. 对HashMap进行排序处理
  12. 为知笔记打不开 ziw 文件问题
  13. 本计算机家庭组的用户名,家庭组
  14. 【Ubuntu】如何在Ubuntu系统上设置好看的动态壁纸(Komorebi)
  15. 2019-1-5-问答-产品经理有哪些细分领域,对应特点是什么?
  16. latex 分页_latex 排版 首页不会换页
  17. 小米路由器R4AC 小米路由器4A百兆版 原厂BootLoader和eeprom
  18. zabbix监控配置(Grafana)
  19. sqlserver数据库同步更新数据到mysql数据库,利用ODBC
  20. CSS解决英文自动换行问题

热门文章

  1. 小米机器人 尘盒配件_石头扫地机器人T6评测:一款提升生活辛福感的宝物
  2. c语言中三种常用的循环控制结构是,三C语言的基本控制结构.ppt
  3. python中exit 的作用_Python退出命令-为什么要使用这么多?何时使用每个命令?
  4. 11g cursor_sharing 参数说明
  5. fragment类中的点击事件空指针异常
  6. 基于JAVA+SpringMVC+MYSQL的简单企业人事管理系统
  7. 199-Pycharm相关
  8. 为什么要用BigDecimal
  9. 智课雅思短语---二、exert positive/ negative effects on…
  10. POJ 3253-Fence Repair(堆)