码迷,mamicode.com
首页 > 编程语言 > 详细

python函数的闭包

时间:2020-03-26 21:55:07      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:python   元素   内部函数   列表   修改   变量   函数嵌套   class   不能   

举个例子,要求多个数的平均值。

nums = [50,30,20,10,77]

# sum()用来求列表中所有元素的和

print(sum(nums)/len(nums))
  • 但是,如果列表当中数字,是不断变化的,上面的代码,就不满足条件了。就要用下面的代码
nums = []

# 创建一个函数计算平均值

def averager(n) :

    # 将n添加到列表当中

    nums.append(n)

    # 求平均值

    return sum(nums)/len(nums)

print(averager(10))
print(averager(30))
print(averager(50))

  • 上面的代码,有一个问题,就是列表nums是谁都能看到和修改的。

  • 万一被人改了,添加进入一个字符串,averager函数就报错了。

  • 所以,要达到一个nums不能被修改的效果。


def make_averager() :

    nums = []

    def averager(n) :

        # 将n添加到列表当中

        nums.append(n)

        # 求平均值

        return sum(nums)/len(nums)

    return averager

averager = make_averager()

print(averager(10))
print(averager(20))
print(averager(30))
print(averager(40))

总结 :

形成闭包的要点有:
1 - 要有函数嵌套
2 - 要将内部函数作为返回值返回
3 - 内部函数必须要使用到外部函数的变量

python函数的闭包

标签:python   元素   内部函数   列表   修改   变量   函数嵌套   class   不能   

原文地址:https://www.cnblogs.com/gnuzsx/p/12577242.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!