第五天(全局变量,局部变量,高级函数)
在python中,没有缩进的变量为全局变量,推荐全部用大写字母。
NAME = "aitg" def mz(): global NAME print(NAME) mz()
在代码块内部的变量为局部变量。
def mz(): name = "aitg" print(name) mz()
局部变量还可以使用global方法指定为全局变量
NAME = "码农也疯狂" def mz(): global NAME NAME = "aitg" return NAME print(mz()) print(NAME) #输出结果全部是 # aitg #aitg
匿名函数使用
#计算x+1的结果 a = lambda x:x+1 print (a(1)) #传入x值 #输出 2
递归使用
def calc(n): print(n) if int(n / 2) == 0: #终止条件 return n res=calc(int(n / 2)) return res res=calc(10) print(res)
高级函数
1、函数式编程
- 函数本身可以赋值给变量,赋值后变量为函数;
- 允许将函数本身作为参数传入另一个函数;
- 允许返回一个函数。
2、map/reduce函数
- map(fun, lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表返回
- reduce(func(x,y),lst),其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累积计算。
lst = [a1, a2 ,a3, ......, an]
reduce(func(x,y), lst) = func(func(func(a1, a2), a3), ......, an)
3、filter函数
- 筛选序列
- filter(func, lst),将func作用于lst的每个元素,然后根据返回值是True或False判断是保留还是丢弃该元素。