zoukankan      html  css  js  c++  java
  • day13 匿名函数,内建函数以及闭包

    一 匿名函数
        意义:为了简化函数代码结构而出现
        特点:
            1 并非没有名字,名字就是赋值的变量名
            2 使用lambda关键字定义
            3 lambda关键字后面直接跟形参,逗号分隔
            4 函数只写一行,形参后加 :返回值
     
        实例:
             mytest=lambda a,b:a*b
         print(mytest(2,3))    //此处调用匿名函数,返回值为6
     
    二 内建函数
     
    eval:剥去字符串的外衣,运行里面的代码
    s1='1+3'
    print(s1)    //输出1+3
    print(eval(s1))    //输出4
     
    hash:哈希值计算函数
    print(hash('aaa'))
     
    help:打印帮助信息
     
    callable:判断一个对象是不是函数名称,能否被调用
     
        mytest=lambda a,b:a*b
        print(mytest(2,3))
        str='abc'
        print(callable(mytest))   //true
        print(callable(str))    //false
     
    类型转换函数:int float bin oct hex bytes list dict
     
    max和min:取最大/小值 //取列表l1最小值 min(l1)
     
    三 闭包
        意义:保证数据的安全。
        简述:在一个外函数中定义了一个内函数,而内函数中引用了外部函数的临时变量,并且外函数的返回值是内部函数名称的引用,这样就构成了一个闭包。
        实例:
            整个历史中的某个商品的平均收盘价。什么叫平局收盘价呢?就是从这个商品一出现开始,每天记录当天价格,然后计算他的平均值:平均值要考虑直至目前为止所有的价格。
            比如大众推出了一款新车:小白轿车。
            第一天价格为:100000元,平均收盘价:100000元
            第二天价格为:110000元,平均收盘价:(100000 + 110000)/2 元
            第三天价格为:120000元,平均收盘价:(100000 + 110000 + 120000)/3 元
     
        # 方案一:
        # l1 = []  # 全局变量 数据不安全
        # li = []
        # def make_averager(new_value):
        #     l1.append(new_value)
        #     total = sum(l1)
        #     averager = total/len(l1)
        #     return averager
        # print(make_averager(100000))
        # print(make_averager(110000))
        # # 很多代码.....
        # l1.append(666)
        # print(make_averager(120000))
        # print(make_averager(90000))
     
        方案二:闭包
        def make_averager():
            l1=[]
            def averager(new_value):
                l1.append(new_value)
                total=sum(l1)
                average = total/len(l1)
                return average
            return averager
        myaverage=make_averager()
        print(myaverage(10000))
        print(myaverage(11000))
     
    闭包总结:
    简单概况就是内函数引用了外部函数的变量,同时外函数返回值为内函数的名称。
     
  • 相关阅读:
    android之自定义ViewGroup和自动换行的布局的实现
    早上开发有感:事情原本可以变的简单
    android中textview显示汉字,字母,数字乱行行问题解决
    MeasureSpec介绍及使用详解
    android中status bar 小结
    Android推送方式比较(转)
    error: Entry 'xxxxxx' not uptodate. Cannot merge.
    android2.3:加载你的SD卡与can't mount /dev/block/mmcblk0
    有客户自远方来,不亦乐乎?唉,怎一个愁字了得
    卸载Norton 8企业版的一次经历
  • 原文地址:https://www.cnblogs.com/spacetime-party/p/13043827.html
Copyright © 2011-2022 走看看