返回介绍

八、闭包、模块、函数、变量作用域

发布于 2024-06-12 23:50:11 字数 1667 浏览 0 评论 0 收藏 0

模块

模块

// 在文件中写`__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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文