自学python100天--第十天:函数进阶--高阶函数

学习目标:学习高阶函数:gloab函数使用方法,map、filter、sorted;了解阶乘方法,以及斐波那契数列和匿名函数;

变量的作用域 gloab 提升作用域 把局部变量声明为全局变量

def fun1():
    global a1   #   把a1 声明为全局变量
    a1 = 13     #   局部变量
    print('-',a1)

fun1()
print('---',a1)

def fun2():
    print(a1)

fun2()
print('-*',a1)

高阶函数 一个函数可以作为参数传递,或者在一个函数中返回另一个函数

def f2():
    print('这是普通函数')

def high():
    print('这是f2',f2)
    return f2
f = high()
f()
print('这是high函数',high()())

高阶函数 作为参数

def high1(f):
    f()
    print('这是high1里面的输出',f())

high1(f2)

高阶函数 map()接收两个参数 第一个参数是函数地址,第二个函数是序列

def test(a):
    return a

print(list(map(int,'1224')))

def pf(a):
    return a*a
print(tuple(map(pf,[ 2, 3 , 5 , 6 ])))

高阶函数 filter()最终保存结果为Ture的元素,接收两个参数,第一个参数是函数地址,第二个参数是序列

def panduan(a):
    return True if a > 10 else False    # 此处为三元运算;
print(list(filter(panduan,[12,4,67,34,2,9,10])))

高阶函数 sorted() sort()

dict1 = {'python':100,'java':99,'c++':97,'mysql':89}

def paixu(item):
    return item[1]
print(sorted (dict1.items(),key=paixu))                 # 升序排序
print(sorted (dict1.items(),key=paixu,reverse=True))    # 降序排序

高阶函数 递归 函数内部调用自身

调用自身 出口 递归体

def digui(n):
    if n == 10:
        return 0
    print(f'开始递归,这是第{n}次')
    digui(n+1)
digui(1)

阶乘

实例:计算1-10之间的和 使用递归完成

def js(n):
    if n == 1:
        return n
    else:
        return n+js(n-1)    # 10+9+js(8)
print(js(100))

斐波那契数列 [1,1,2,3,5,8,13,21,34]

def fib(n):
    if n <= 2:
        return 1
    else:
        return fib(n-1)+fib(n-2)
print(fib(5))
'''
fib(5) = fib(4)+fib(3)   3+2
fib(4) = fib(3)+fib(2)   2+1
fib(3) = fib(2)+fib(1)   2
fib(2) = 1
fib(1) = 1
'''

匿名函数 内置函数 自定义函数 def 函数名

没有名字的函数 使用lambda

lambda 参数列表:返回值

def qiu_he(a,b):
    return a+b
print((lambda a , b, c = 3:a+b+c)(2,4))
res = lambda x:x*x
print(list(map(lambda x: x * x, [2, 3, 4, 5])))

dict2 = {'python':100,'java':99,'c++':97,'mysql':89}
print(sorted(dict2.items(), key=lambda x: x[1]))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值