Day3-递归函数、高阶函数、匿名函数、内置函数

一、递归函数

定义:函数内部可以调用其它函数,如果调用自身,就叫递归。

递归特性:

1.必须有结束条件退出:

>>> def calc(n):
...     print(n)
...     return calc(n+1)
...
>>> calc(0)
0
1
...
998
RecursionError: maximum recursion depth exceeded while calling a Python object

分析:
没有结束条件,超过最大递归次数999次后报错

2.每次进入更深一层递归时,问题规模相比上次递归都有所减少

3.递归效率不高,递归次数过多导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构来实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧,由于栈大小不是无限的,所以递归调用的次数过多,会导致栈溢出)

def calc(n):
    print(n)
    if int(n/2) > 0 :   #int()返回整数
        return calc(int(n/2))
    print("-->",n)
calc(10)

执行结果:
10
5
2
1
--> 1

二、匿名函数

匿名函数就是不需要显式的指定函数

#这段代码

def calc(n):

    return n**n

print(calc(10))

#换成匿名函数

calc = lambda n:n**n

print(calc(10))

10000000000

与其它函数配合使用,

1 res = map(lambda x:x**2,[1,5,7,4,8])
2 for i in res:
3     print(i)
4 输出
5 1
6 25
7 49
8 16
9 64

map函数用法:第一个参数接收一个函数名,第二个参数接收一个可迭代对象

 1 ls = [1,2,3]
 2 rs = map(str, ls)
 3 print rs
 4 执行结果:
 5 [‘1‘, ‘2‘, ‘3‘]
 6 ---------------------------------
 7 lt = [1, 2, 3, 4, 5, 6]
 8 def add(num):
 9     return num + 1
10
11 rs = map(add, lt)
12 print rs
13 [2,3,4,5,6,7]

三、高阶函数

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

1 def add(x,y,f):
2     return f(x) + f(y)
3 res = add(3,-6,abs)
4 print(res)
5 9

四、内置函数

内置参数详解 https://docs.python.org/3/library/functions.html?highlight=built#ascii

时间: 2024-08-27 07:16:07

Day3-递归函数、高阶函数、匿名函数、内置函数的相关文章

day05 协程函数,递归函数,匿名函数lambda,内置函数map reduce filter max min zip sorted,匿名函数lambda和内置函数结合使用,面向过程编程与函数编程,模块与包的使用,re模块内置函数

基础篇 本章大纲: 协程函数 递归函数 匿名函数lambda 内置函数map reduce filter  max min zip sorted 匿名函数lambda和内置函数结合使用 面向过程编程与函数编程 模块与包的使用 re模块内置函数 一,协程函数 注意:函数先定义,后使用.这是函数第一原则.函数主要分为定义,调用 1.1,什么是协程函数 协程函数特点:yield变为表达式,可以通过g.send(value)传值,用send传值时协程函数需要初始化,也可以说是生成器函数的一种 1.2,协

python函数七(内置函数)

一.内置函数 1.重要内置函数 都是带key的: max min map filter 返回的是迭代器 sorted 返回的是列表 函数名在后 1.1 max dic = {'k1':20,'k2':30,'k3':100} def func(x): return dic[x] l1 = max(dic,key=func,) #(输出的是dic默认就是输出dic的键),函数返回的是是value值,即选出最大的value对应的键 print(l1) #k3 dic = {3:20,2:30,1:1

python基础12_匿名_内置函数

一个二分查找的示例: # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, 66] def binary_search(dataset, find_num): print(dataset) if len(dataset) > 1: mid = int(len(dataset) / 2) if dataset[mid] == find_num: # find it print

文成小盆友python-num3 集合,函数,-- 部分内置函数

本接主要内容: set -- 集合数据类型 函数 自定义函数 部分内置函数 一.set 集合数据类型 set集合,是一个无序且不重复的元素集合 集合基本特性 无序 不重复 创建集合 #!/bin/env python s1 = {"1","2","3","4"} ##或者 s2 = set() set 提供的功能 1 class set(object): 2 """ 3 set() -> n

python自定义函数、常用内置函数

1.python自定义函数 Python中用户自己编写的用于实现特定功能的函数代码块,就是自定义函数. 如: def是关键字,saa是自定义函数名,括号用于传参,可以不写参数,冒号后面是函数代码块,这里只写了一条print语句 注意:函数不调用不执行,只有调用函数才会执行 小练习1: 执行结果是: : 再来看一个小练2: 这是一个用来生成双色球的小程序,如蓝色球号码 01 红色球 22 12 23 14 05 26,蓝色球数字范围1-16,红色球数字范围1-33,最后一行调用produce()自

6-1:递归、内置函数、匿名函数

本节内容: 1.函数基本语法及特性 2.函数: 函数的参数: 形参,实参: 4种参数,注意参数顺序 参数传递:可变类型和不可变类型 函数的返回值: return的几种情况:返回值个数0/1/多个 3.函数的嵌套调用 4.递归:添加图片??? 5.匿名函数,lambda 6.内置函数 eval 7.使用模块中的函数 8.函数式编程介绍 9.高阶函数 原文地址:https://www.cnblogs.com/chenhuan123/p/12038607.html

python内置函数、匿名函数、递归

一.内置函数 内置函数详解:http://www.runoob.com/python/python-built-in-functions.html 二.匿名函数 匿名函数就是不需要显示的指定函数 #这段代码 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lambda n:n**n print(calc(10)) l=[3,2,100,999,213,1111,31121,333] print(max(l)) dic={'k1':1

三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数

一 三元表达式.列表推导式.生成器表达式 1.三元表达式 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 2.列表推导式 #1.示例 egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i for i in range(10)] #2.语法 [expression for item1 in iterabl

python之迭代器生成器和内置函数,匿名函数

今天学习了迭代器生成器以及内置函数和匿名函数,说实话有些懵圈,有些难度了. 一.迭代器和生成器 1.如何从列表.字典中取值的: index索引 for循环 凡是可以使用for循环取值的都是可迭代的 (1)可迭代协议:内部含有__iter__方法的都是可迭代的 (2)迭代器协议:内部含有__iter__方法和__next__方法的都是迭代器 什么是可迭代的:内部含有__iter__方法的都是可迭代的 什么是迭代器:迭代器=iter(可迭代的),自带一个__next__方法 可迭代最大的优势:节省内

十一、函数递归,算法二分法,三元表达式,列表字典生成式,匿名函数,内置函数

一.函数递归: 函数的递归:函数在调用阶段直接或间接的又调用自身 递归分为两个阶段 1.回溯:就是一次次重复的过程,这个重复的过程必须建立在每一次重复问题的复杂度都应该下降 直到有一个最终的结束条件 2.递推:一次次往回推导的过程 3.递归函数在运行过程中一定要有出口,否则会无限循环下去 # 1.求4以内的和: def sum_numbers(num): if num == 1: return 1 return num + sum_numbers(num - 1) # 递归特点:函数内部自己调用