匿名函数

在python表达式中,用来创建匿名函数的是lambda关键字。

lambda函数在python语言中只能使用纯表达式,也就是说,在lambda函数体中不能使用while和try,当然也不能赋值等python语句。

实际应用过程中,lambda函数最适合在参数列表中使用。下面我们来看胰腺癌例子,使用lambda函数表达式反转拼写,然后依据发转的结果对其进行排序,具体如下所示:

那么,是不是意味着lambda函数很受欢迎,应用范围很广呢?其实不然。除了向上述的例子中那样,lambda函数作为参数传给高阶函数外,python中很少使用匿名函数。很少使用的原因是lambda函数不易阅读和不易撰写。

可调用对象

既然提到可调用对象,我们就需要判断什么样的对象是可调用的,如何进行判断呢?

判断对象是否可调用可以使用python内置的callable()函数。

python数据模型文档中给出了7种可调用对象,具体如下:

1.用户定义的函数

使用def语句创建函数

使用lambda表达式创建函数

2.内置函数

使用C语言实现的函数,例如len或time.strftime。

3.内置方法

使用C语言实现的方法,如dict.get。

4.方法

在类的定义体中定义的函数。

5.类

定义类我们使用的是class,调用类就相当于调用函数。

6.类的实例

如果类定义类__call__方法,则它的实例可以作为函数进行调用。

7.生成器函数

使用yield关键字的函数或方法,而调用生成器函数返回的是生成器对象。

用户定义的可调用类型

除了python函数是真正的对象外,任何python对象都可以像函数一样表现。因此,只需要实现实例方法__call__。

接下来,我们来看下如何定义可调用类型。

In [45]: import random

In [46]: class B:

...: def __init__(self,items):

...: self._items=list(items)

...: random.shuffle(self._items)

...:

In [47]: class B:

...: def __init__(self,items):

...: self._items=list(items)

...: random.shuffle(self._items)

...: def pick(self):

...: try:

...: return self._items.pop()

...: except IndexError:

...: raise LookupError('pick from empty B')

...: def __call__(self):

...: return self.pick()

...:

In [48]: b=B(range(6))

In [49]: b.pick()

Out[49]: 3

In [50]: b()

Out[50]: 1

In [51]: callable(b)

Out[51]: True

如上代码所示,最后使用callabel方法判断了对象b是否可调用,返回的结果是True,即b是可调用对象。

python定义匿名函数关键字_python语言的匿名函数、7种可调用对象以及用户定义的可调用类型...相关推荐

  1. python语言中不用来定义函数的关键字_Python 语言中用来定义函数的关键字是

    Python 语言中用来定义函数的关键字是 答:def 调查问卷采集是数据采集人员通过设计具有针对性的问卷,采用方式进行信息采集 答:以上都是 中国大学MOOC: 突出重点,必须以解决问题为目标.也就 ...

  2. python循环语句的关键字_Python语言循环语句while关键字

    内容简介: Python入门篇教程从基础的计算机发展史.Python的来源与发展历史开始讲起: 依次讲解python变量与表达式.数据类型.运算符.流程控制语句等,末尾通过课堂练习.课后作业以及微型P ...

  3. python定义匿名函数关键字_Python(11):Python函数基础(定义函数、函数参数、匿名函数)...

     函数先定义函数,后调用 一.定义函数: 1.简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 (). 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数. ...

  4. python定义匿名函数关键字_Python匿名函数

    匿名:就是没有名字. 匿名函数,即没有名字的函数 没有名字如何定义,如何调用,如果能调用,如何使用. Python借助lambda表达式构建匿名函数. 格式: Lambda参数列表:表达式 (Lamb ...

  5. python语言中有哪些函数_Python语言中的函数

    本文主要向大家介绍了Python语言中的函数,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 学了 Python 中的数据类型,语句,接下来就来说一下 Python 中的函数,函数 ...

  6. 在python子程序中、使用关键字_Python 的控制和函数

    控制if else for while 函数 函数的定义 函数一词来源于数学,但编程中的函数概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BAS ...

  7. python自定义函数的关键字_python学习之--自定义函数:

    Python之--自定义函数: 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 以下自定义 ...

  8. python函数结构_Python代码结构:函数

    欢迎关注「issnail」 "一起学习,一起成长!" 1.定义函数与调用函数 定义python函数:依次输入def.函数名.带有函数参数的圆括号,最后紧跟一个冒号(:) 函数命名规 ...

  9. python规定的函数头部_Python基础手册23——函数的调用

    三.函数的调用 Python 语言中调用函数与在其它高级语言中一样, 函数名加上函数运算符(一对小括号). 括号之间是所有可选的参数. 即使一个参数也没有, 小括号也不能省略.函数在调用之前必须先定义 ...

最新文章

  1. php 实现tab切换_微信小程序实例:实现顶部tab切换以及滑动切换时导航栏会随着移动的效果(代码)...
  2. python计算平方用map函数_python的map函数的使用方法详解以及使用案例(处理每个元素的自增、自减、平方等)...
  3. java基础实例代码_Java基础实例
  4. socket.io 中文手册 socket.io 中文文档
  5. DBnet检测知识蒸馏+tensorrt推理(文字检测+条形码检测)
  6. egon说一切皆对象--------面向对象进阶紫禁之巅
  7. clone,Duplicate复制target XCode iOS
  8. 怎么实现多用户同时远程连接到一台电脑上
  9. 手机远程控制软件和开源框架
  10. 4*4*4光立方制作分享
  11. java8配置环境变量_java8环境变量设置
  12. 用springboot+netty搭建在线web聊天室
  13. 非线性拟合(C++版)
  14. 网络防火墙开发二三事 转
  15. 最小二乘法曲线拟合(c++实现)
  16. WordPress SEO 技巧
  17. U盘产品如何做好软文推广利用软文来打造为产品引流宣传
  18. MapX和MapXtreme区别
  19. 【CodeForces 1255D --- Feeding Chicken】
  20. Windows Mobile告别式 昔日经典回忆录

热门文章

  1. 抚摸那条船——彭晓东
  2. 外挂学习之路(14)--- 游戏中的二叉树
  3. cocos2d-x游戏实例(22)-纵版射击游戏(9)
  4. 第19讲:Pyppeteer 爬取实战
  5. Netty学习笔记(五)Pipeline
  6. TeamCity和GitLab整合
  7. Kylin、Druid、ClickHouse核心技术对比
  8. 编程思考:对象生命周期的问题
  9. 模拟实现mapset
  10. IXDC 2018 | 打动人心的互联网保险设计