python开发基础(三)函数作用域和内置MapReduce
from functools import reduce # 代码块1 name = '小明' def foo(): name = 'foo小明' def bar(): name = 'bar小明' print(name) return bar() func = foo() print(func) # 代码块2 name_1 = '小明' def foo_1(): name_1 = 'foo小明' print(name_1) def bar_1(): name_1 = 'bar小明' print(name_1) # return bar_1() foo_1() bar_1() # 块3 name_3 = '小明' def foo_3(): name_3 = 'foo小明' print(name_3) def bar_3(): name_3 = 'bar小明' print(name_3) def tt(): print(name) return tt return bar_3 foo_3() foo_3()() foo_3()()() # 匿名函数 lambda 函数形参:return后的 """ 匿名函数用法 a = lambda x: x+1 print(a) // a:变量 lambda: 匿名函数关键字 x: 函数形参 x+1: return后的逻辑 最后print(a) """ def calc(x): return x + 1 print(calc(10)) number = lambda x: x + 1 print(number(10)) # 改名 # def change_name(x): # return name + '_hh' # # # print(change_name(name)) change_name = lambda z: z + '好聪明' print(change_name(name)) # 返回多个函数值 number_1 = lambda x, y: (x + 1, y + 2) print(number_1(9, 18)) # 高阶函数1.把函数的返回值当做参数, 2.返回值中包含函数 # 把函数的返回值当做参数 """ def foo(x): print(x) def ber(manage): # 高阶函数 print('My name is %s ' % manage) # return manage foo(ber('小明')) """ # 返回值中包含函数 """ def bar(): print('from bar') def foo(): print('from foo') # 高阶函数 return bar foo()() print('-' * 20) def hi(): print('Hi') def hello(): print('hello world') return hi() hello() """ # 函数式编程 num_list = [1, 2, 3, 4, 5] # add_one = lambda x: x+1 def add_one(x): return x + 1 # less_one = lambda x: x-1 def less_one(x): return x - 1 # square_list = lambda x: x**2 def square(x): return x ** 2 def map_list(func, array): new_list = [] for i in array: func(i) new_list.append(func(i)) return new_list """ new_add_list = map_list(func=add_one, array=num_list) new_less_list = map_list(func=less_one, array=num_list) print(new_add_list) print(new_less_list) new_square_list = map_list(func=lambda x: x**2, array=num_list) print(new_square_list) """ # map内置函数 new_map_add = map(lambda x: x ** 2, num_list) print('内置函数map,', '处理方法x^2,', '处理结果:', list(new_map_add)) new_map_less = map(less_one, num_list) print('内置函数map,', '处理方法x-1,', '处理结果:', list(new_map_less)) msg = 'xiaoming' new_msg = list(map(lambda x: x.upper(),msg)) print(new_msg) # 函数式编程 # filter函数 people = ['1号', 'sb_2号', '3号', '4号', 'sb_5号', '6号_sb'] # lambda x: x.endswith('sb') # def sb_show(n): # return n.endswith('sb') def good_p(func, array): good_people = [] for p in array: if not func(p): good_people.append(p) return good_people # new_people = good_p(lambda x: x.endswith('sb'), people) # print(new_people) # 函数式编程 # filter函数 new_filter_people_1 = filter(lambda x: not x.endswith('sb'), people) new_filter_people_2 = filter(lambda x: not x.startswith('sb'), people) print(list(new_filter_people_1)) print(list(new_filter_people_2)) print('-' * 50) # filter函数 num_list = [1, 2, 3, 4] tools_1 = (lambda x, y: x * y) # def multi(x, y): # return x * y def reduce_list(func, array, init=None): if init is None: new = array.pop(0) else: new = init for num in array: new = func(new, num) return new # print(reduce_list(tools_1, num_list, 100)) # map 传入列表, 输出列表, 顺序不变 # filter 传入列表,遍历列表,输入列表 # reduce函数 reduce_new = reduce(tools_1, num_list, 100) print(reduce_new)
本文来自博客园,作者:关于段主任的一切,转载请注明原文链接:https://www.cnblogs.com/fairylandfuture/p/14657993.html