学习目标:学习高阶函数:gloab函数使用方法,map、filter、sorted;了解阶乘方法,以及斐波那契数列和匿名函数;
变量的作用域 gloab 提升作用域 把局部变量声明为全局变量
def fun1():
global 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)
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]))