文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
八、闭包、模块、函数、变量作用域
模块
// 在文件中写`__init__.py` 只是标注这是一个包 可以什么都不用写
导入模块重新命名
import test as t
函数
函数内部没有
return
返回的结果就是None
// 函数可以返回多个值 def test(): return x, y,z // 接收返回的值 x,y,z = test() // 其实就是返回了一个元组类型
闭包
''' 闭包 = 函数+环境变量(在函数外部) ''' def test(): num = 10 def fun(x): return num * x return fun f = test() print(f(10)) origin = 0 def go(step): global origin new_pos = step + origin origin = new_pos return new_pos print(go(1)) print(go(2)) print(go(3))
匿名函数 lambda
''' 函数式编程:匿名函数 lambda ''' def add(x,y): return x + y add(1,2) # 匿名函数定义 f = lambda x,y: x+y print(f(1,2)) arr = [{'key': 'poetries','value': 100},{'key': 'jing','value': 10}] # 处理键值对 res = map(lambda item: {'name': item['key'],'score': item['value']}, arr) print(list(res))
map 函数
''' map 函数 ''' arr = [1,2,3,4,5,6] arr2 = [10,12,14,16,12,14] # 列表推导式 a = [i*i for i in arr ] # print(a) # map 函数 b = map(lambda x: x*x,arr) print(list(b)) c = map(lambda x,y: x*x + y,arr,arr2) # 可以传多个 list,个数要相同 print(list(c))
reduce 函数
''' reduce 函数 ''' from functools import reduce arr = [1,2,3,4,5,6] # 连续调用 lambda r = reduce(lambda x,y:x+y,arr) print(r)
filter 函数
''' filter 函数 ''' arr = [1,2,3,4,5,6,7,0,0,False,''] # 过滤空字符串 res = filter(lambda x: not not x,arr) print(list(res)) # [1,2,3,4,5,6,7]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论