资讯专栏INFORMATION COLUMN

python学习笔记 函数

Scorpion / 2229人阅读

摘要:一等函数在中,函数是一等对象。匿名函数关键字在表达式内创建匿名函数然而,简单的句法限制了函数的定义体只能使用纯表达式,即函数的定义体中不能赋值,不能使用等语句。匿名函数适合用于作为函数的参数

一等函数

在python中,函数是一等对象。编程语言理论家把“一等对象”定义为满足以下条件的程序实体:

在运行时创建

能赋值给变量或数据结构中的元素

能作为参数传给函数

能作为函数的返回结果

在python中,整数、字符串和字典都是一等对象,没有什么特别之处。

标题“一等函数”是“把函数视作一等对象”的简称,虽然并不完美,但只是一种称谓。

>>> def factorial(n):
...     """returns n"""
...     return 1 if n < 2 else n * factorial(n - 1)
...
>>> factorial(42)
1405006117752879898543142606244511569936384000000000
>>> type(factorial)

>>> fact = factorial
>>> fact

>>> fact(5)
120
>>> map(factorial, range(11))

>>> list(map(factorial, range(11)))
[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]
>>>

程序中定义了一个阶乘函数 factorial, 其本身是一个递归函数,可以理解为函数可以作为函数的返回值(的一部分),可以做正常运算,也可以复制给另一个变量fact,也可以作为高等函数map 的一个参数。

高等函数

接受函数作为参数,或者把函数作为结果返回的函数是高等函数

python中常用的高等函数包括map, filter, sorted, reduce等等

>>> fruits = ["strawberry", "apple", "banana", "peach", "fig", "cherry"]
>>> sorted(fruits)
["apple", "banana", "cherry", "fig", "peach", "strawberry"]
>>> def reverse(word):
...     return word[::-1]
...
>>> reverse("testing")
"gnitset"
>>> sorted(fruits, key=reverse)
["banana", "apple", "fig", "peach", "strawberry", "cherry"]

sorted 是一个高级函数,其可以接受函数 reverse 作为参数

>>> from functools import reduce
>>> from operator import add
>>> reduce(add, range(100))
4950
>>> sum(range(100))
4950

从python3.0 起,reduce不再是内置函数,其作用被减弱,可轻易被替代。上例是计算0~99 的和。sum 和 reduce 的通用思想是把某个操作连续运用到序列的元素上,累积计算,把一系列值规约成一个值。

匿名函数

lambda关键字在python表达式内创建匿名函数

然而,python简单的句法限制了 lambda 函数的定义体只能使用纯表达式,即lambda 函数的定义体中不能赋值,不能使用while、try等python语句。

匿名函数适合用于作为函数的参数

>>> fruits
["strawberry", "apple", "banana", "peach", "fig", "cherry"]
>>> sorted(fruits, key=lambda word: word[::-1])
["banana", "apple", "fig", "peach", "strawberry", "cherry"]






文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42239.html

相关文章

  • python学习笔记-调用函数

    摘要:调用函数时常见的错误函数参数个数不正确会给我们返回,并给出确切的错误信息。例如将变量名指向这个取整函数调用函数,即调用这个取整数的函数 python有许多内置的函数(Build-in Functions)例如abs()——求绝对值的函数供我们使用。那么我们如何调用这些函数呢?直接书写函数名带括号并在括号内传入参数即可。例如abs(-10.2)即可。python内置的函数可以到https...

    AZmake 评论0 收藏0
  • SegmentFault 技术周刊 Vol.30 - 学习 Python 来做一些神奇好玩的事情吧

    摘要:学习笔记七数学形态学关注的是图像中的形状,它提供了一些方法用于检测形状和改变形状。学习笔记十一尺度不变特征变换,简称是图像局部特征提取的现代方法基于区域图像块的分析。本文的目的是简明扼要地说明的编码机制,并给出一些建议。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 开始之前,我们先来看这样一个提问: pyth...

    lifesimple 评论0 收藏0
  • SegmentFault 技术周刊 Vol.30 - 学习 Python 来做一些神奇好玩的事情吧

    摘要:学习笔记七数学形态学关注的是图像中的形状,它提供了一些方法用于检测形状和改变形状。学习笔记十一尺度不变特征变换,简称是图像局部特征提取的现代方法基于区域图像块的分析。本文的目的是简明扼要地说明的编码机制,并给出一些建议。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 开始之前,我们先来看这样一个提问: pyth...

    SQC 评论0 收藏0
  • python学习笔记-定义函数

    摘要:空函数如果想要定义一个什么都不做的函数,那么可以用语句。为函数添加参数检查我们对作一些改写。此时调用函数时传入错误的参数则会抛出。函数返回多个值支持返回多个值。 python中定义函数的关键词是def,例如定义一个叫my_function的函数我们可以这么定义, 其中括号内的x,y为传入的参数。 def my_function(): # function body 返回值 函数...

    CoderStudy 评论0 收藏0
  • Python入门学习笔记汇总

    摘要:导语本文章汇总了本人在学习基础之绪论篇数据结构篇函数篇面向对象篇控制流程篇和元编程篇学习笔记的链接,打算入门的朋友们可以按需查看并交流。 导语:本文章汇总了本人在学习Python基础之绪论篇、数据结构篇、函数篇、面向对象篇、控制流程篇和元编程篇学习笔记的链接,打算入门Python的朋友们可以按需查看并交流。 第一部分:绪论篇 1、Python数据模型 第二部分:数据结构篇 2、序列构成...

    U2FsdGVkX1x 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<