返回顶部
首页 > 资讯 > 后端开发 > Python >Python中的匿名函数及递归思想分析
  • 621
分享到

Python中的匿名函数及递归思想分析

2023-06-16 11:06:17 621人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“python中的匿名函数及递归思想分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中的匿名函数及递归思想分析”吧!匿名函数首先咱们先简单复习一下:函数的定义:de

本篇内容主要讲解“python中的匿名函数及递归思想分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习Python中的匿名函数及递归思想分析”吧!

匿名函数

首先咱们先简单复习一下:

函数的定义:

def 函数名字(参数):   具体的函数语句块   return [需要返回的数据]

函数的执行:

# 函数只有被调用的时候才执行,函数可以执行多次 函数名称()

局部与全局变量:

不同的函数有不同的作用域

def test1():     name = 'XXX'     print(name)   def test2():     name = 'YYY'     print(name)   test1() test2()
局部想使用全局变量 使用global 变量名 局部与全局变量同名仍要同时使用全局变量局部变量 globals()['变量名']

还有一种情况就是函数内嵌套了函数想使用上次层函数的变量。

def test1():    name = 'XXX'     def test2():        # 使用上一层的变量并打印查看        nonlocal name        print(name)    # 在函数test1中调用执行test2    test2()   test1() # 直接调用test2会抛出异常test2 未定义 # test2()

Python中的匿名函数及递归思想分析

因为箭头那里有空格,Python也是根据这种格式来判断作用域的,只能像红色框那样在同一级的地方调用。

一个函数内返回另一个函数:

def test1():    print("in the test1")   def test2():    print("in the test2")    return test1()   test2()

想把上面的这段代码解释清楚,咱们插播一个递归。

递归的特性:

  • 递归就是自己调用自己

  • 必须有个明确的结束条件,不然会导致栈溢出

  • 每次递归问题都有所减少

  • 递归效率不高,但是有时候真的好用

来个最经典的斐波拉契数组

# 斐波拉契数组长这样:1,1,2,3,5,8,13,21,34,55... def fabonacci(n):    # 结束条件    if n <= 2:        # 因为前两个数字都是1,所以当n小于等于2时返回1        v = 1        return v    # 大于2的话就自己调用自己,斐波拉契第n个数字等于n-1的数字+n-2数字的和    v = fabonacci(n-1)+fabonacci(n-2)    return v   print(fabonacci(6))

Python中的匿名函数及递归思想分析

import sys  # 打印当前递归深度,默认为1000 print(sys.getrecursionlimit()) # 设置最大递归深度 sys.setrecursionlimit(999999999) print(sys.getrecursionlimit())

其实就是表达函数内调用另一个函数,会等待另一个函数执行完毕,该函数再执行到结束...感觉递归讲不讲都一样了...so,咱们还是赶紧回到正题,代码的执行顺序是这样子的....

Python中的匿名函数及递归思想分析

当然还能这么玩:

def test1():    print("in the test1")   def test2():    print("in the test2")    # 此处返回test1的内存地址    return test1   test2()() # 先执行test2(),返回test1的内存地址 # 加上小括号执行test1

匿名函数

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 使用lambda 创建

  3. 简单来说匿名函数就是一个没有名字的简单函数

  4. 匿名函数只有一个表达式,return 表达式计算的值

创建一个简单的匿名函数,命令如下所示。

格式       lambda 参数列表:表达式
lambda num1, num2: num1+num2

使用一个变量接收一下,就是保存的内存地址,加上小括号传入参数就能运行了。

func = lambda num1, num2: num1+num2  print(func(1, 2))

我使用的编辑器是VS Code ,发现了一个问题,格式化代码的时候把匿名函数改成了函数...具体原因及细节未知。

格式化前:

Python中的匿名函数及递归思想分析

格式化后:

Python中的匿名函数及递归思想分析

map 映射(循环让每一个函数执行函数,结果保存到新的列表)

map(匿名函数,可迭代对象)

map()处理序列中的每个元素,得到的结果是一个可迭代对象,该对象个数和位置与原来一样。

li = [1, 5, 3, 2, 3] res = map(lambda x: x+1, li) print(type(res)) # 返回的map对象 print(list(res))

filter 判断

filter()遍历序列中的每个元素,得到的结果是True则留下来。

people = ['sb_laowang', 'sb_xiaozhang', 'sb_laozhang', 'xiaoliu'] # 将满足以帅比开头的保存为新的对象 res = filter(lambda x: x.startswith('sb'), people) print(type(res)) print(list(res))

reduce:将序列进行合并操作

from functools import reduce num_li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] str_li = list('hello') res_num = reduce(lambda x, y: x+y, num_li) res_str = reduce(lambda x, y: x+y, str_li) print(str_li)   print(type(res_num), res_num) print(type(res_str), res_str)

第一次运行的时候x,y是可迭代对象的前两个,后面x都是之前的累加,y则是没有进行累加的第一个,说一下reduce(lambda x, y: x+y,  num_li)这个吧,可以打个断点看一下。

第一次x = 1 , y = 2 第二次x = 3 , y = 3 第三次x = 6 , y = 4 第四次x = 10 , y = 5 ...

匿名函数的好处:

  • 简化代码

  • 没有名字,避免函数名字冲突

查看某个模块的所有方法:

# print(dir(模块名字)) # 例如: import time print(dir(time))  print(dir(list))

提取数据结构:

# 可能有这种需求,一个人给你个文件,读取出来是文本,或者是需要计算的公式,但是他是字符串  # 假如是个字典格式的 {'name':'sb'},但是他是个文本 temp1 = "{'name':'sb'}" print(temp1,type(temp1)) temp2 = eval(temp1) print(temp2, type(temp2))  temp3 = "1+2" print(eval(temp3))  # 注意只能提取出来格式与要提取的格式一样的文本

总结:

本文基于Python,主要讲解了递归思想和匿名函数相关知识,例举了几个常用的匿名函数及其基本用法,如lambda、map、reduce、filter等,并简述了匿名函数的优点。关于匿名函数,还有以下一点需要注意。

匿名函数书写简单,适用于仅有一个简单表达式的函数,并且避免了函数名字冲突的问题,两个函数名字冲突下面函数会覆盖上面函数的功能,如:

def func():    print('aaa')  def func():    print('bbb')   func()

Python中的匿名函数及递归思想分析

Python中的匿名函数及递归思想分析

Python中的匿名函数及递归思想分析

但是编辑器能检测出两个同名的函数,有一个编辑异常,虽然能正常运行,但是显然不符合代码开发规范。匿名函数没有名字肯定不会出现函数名字重复。

到此,相信大家对“Python中的匿名函数及递归思想分析”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Python中的匿名函数及递归思想分析

本文链接: https://lsjlt.com/news/283504.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中的匿名函数及递归思想分析
    本篇内容主要讲解“Python中的匿名函数及递归思想分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中的匿名函数及递归思想分析”吧!匿名函数首先咱们先简单复习一下:函数的定义:de...
    99+
    2023-06-16
  • python中递归函数与匿名函数的特性
    这篇文章主要介绍“python中递归函数与匿名函数的特性”,在日常操作中,相信很多人在python中递归函数与匿名函数的特性问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python中递归函数与匿名函数的特性...
    99+
    2023-06-02
  • 怎么调用Python递归函数与匿名函数
    这篇文章主要讲解了“怎么调用Python递归函数与匿名函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么调用Python递归函数与匿名函数”吧!一. 递归函数  a) 引言:在一个函数中...
    99+
    2023-06-02
  • Python的递归函数与匿名函数调用方法是什么
    本篇内容主要讲解“Python的递归函数与匿名函数调用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python的递归函数与匿名函数调用方法是什么”吧!一. 递归函数  a) 引言:在...
    99+
    2023-06-01
  • Python编程:递归与匿名函数及函数属性与文档字符串(函数补充)
    本文简单扼要地说,辅以代码进一步地加深理解。 递归函数当函数调用自身而生成最终结果时,这样的函数称为递归。有时递归函数非常有用,因为它们使编写代码变得更容易——使用递归范式编写一些算法非常容易,而其他算法则不是这样。没有不能以迭代方式重写的...
    99+
    2023-05-14
    Python 语言 递归函数
  • Python3中递归函数的示例分析
    这篇文章将为大家详细讲解有关Python3中递归函数的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python3之递归函数简单示例概述递归函数即直接或间接调用自身的函数,且递归过程...
    99+
    2023-06-02
  • C++ 函数递归详解:递归的复杂度分析
    递归是一种函数调用自身的过程。递归的时间复杂度可以通过计算递归调用次数来分析,例如阶乘函数为 o(n^2),斐波那契数列第 n 项的递归函数为 o(φ^n),其中 φ 是黄金比。 C+...
    99+
    2024-05-04
    c++ 函数递归
  • C++ 函数的递归实现:递归与非递归算法的比较分析?
    递归算法通过函数自调用解决结构化的问题,优点是简洁易懂,缺点是效率较低且可能发生堆栈溢出;非递归算法通过显式管理堆栈数据结构避免递归,优点是效率更高且避免堆栈溢出,缺点是代码可能更复杂。...
    99+
    2024-04-22
    c++ 递归 堆栈溢出
  • C语言中函数递归的示例分析
    这篇文章主要介绍C语言中函数递归的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是递归?递归(recursion):程序调用自身的一种编程技巧。如何理解函数递归:从调用自身层面:函数递归就是函数自己调用自...
    99+
    2023-06-29
  • Python递归函数的原理及应用
    本篇内容主要讲解“Python递归函数的原理及应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python递归函数的原理及应用”吧!一、什么是递归函数在函数内部,可以调用其他函数。如果一个函数...
    99+
    2023-06-15
  • Python匿名函数的介绍及用法
    这篇文章主要介绍“Python匿名函数的介绍及用法”,在日常操作中,相信很多人在Python匿名函数的介绍及用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python匿名函数的介绍及用法”的疑惑有所帮助!...
    99+
    2023-06-15
  • Golang函数的匿名函数应用场景分析
    作为一门现代化的编程语言,Golang(又称Go语言)具有众多强大的特性。其中,匿名函数是Golang的一个非常重要的概念,被广泛应用于各种场景中。在本文中,我们将深入分析Golang函数中匿名函数的应用场景。事件处理器在事件处理器中,匿名...
    99+
    2023-05-16
    Golang 匿名函数 应用场景分析
  • 解决python递归函数及递归次数受到限制的问题
    目录递归函数及递归次数受到限制求和:sum=n+n(n-1)+…+1求阶乘:n!=1x2x3…xn解决问题的办法是修改可递归的次数如何控制递归的次数第一种...
    99+
    2024-04-02
  • C++ 函数的递归实现:递归在语言分析中的应用示例?
    递归是一种函数在自身内部调用自身的编程范式。在 c++++ 中,可使用 operator() 运算符实现递归。递归在语言分析中可用作分析嵌套结构的工具,例如识别括号序列的合法性:如果序列...
    99+
    2024-04-22
    函数 c++ 递归
  • Python浅析匿名函数lambda的用法
    目录lambda函数的定义   Lambda函数在Python中lambda函数的定义    lambda函数是Pytho...
    99+
    2024-04-02
  • C++ 函数递归详解:分治法中的递归应用
    递归是一种函数自我调用的技术,适用于可分解成较小规模子问题的问题。分治法采用递归将问题分解成独立子问题,逐步解决。如 findmaximum() 函数递归查找数组中最大值,通过检查基本情...
    99+
    2024-05-03
    c++ 递归
  • python中的递归函数是什么
    这篇文章将为大家详细讲解有关python中的递归函数是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代...
    99+
    2023-06-14
  • Python用函数思想完成哥德巴赫猜想代码分析
    哥德巴赫猜想:大于8的偶数之和都可以被两个素数相加 范围 8 - 10000 思路: 首先不要去管需要什么什么东西实现,所以我们如果知道如何去完成: 大于8的偶数之和都可以被两个素数相加: # 可以假设 这个猜...
    99+
    2022-06-02
    Python 哥德巴赫猜想
  • 基于JS递归函数细化的示例分析
    这篇文章将为大家详细讲解有关基于JS递归函数细化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。程序调用自身的编程技巧称为递归( recursion)。一个过程或...
    99+
    2024-04-02
  • C语言深入分析递归函数的实现
    目录一、递归的数学思想二、递归函数三、递归函数设计技巧四、递归函数设计示例一五、递归函数设计示例二六、递归函数设计示例三七、小结一、递归的数学思想 递归是一种数学上分而自治的思想 递...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作