zoukankan      html  css  js  c++  java
  • 第五天 关于作用域和三个重要函数

    作用域
    例1、
        def test1():
            print('in the test1')
        def test():
            print('in the test')
        return test1()
    
        res = test()
        print(res)
    >>> in the test
        in the test1
        None
    
    例2、
    name = "alex"
    def foo():
        name = 'linhaifeng'
        def bar():
            name = 'wupeiqi'
            print(name)
        return bar
    a = foo() 
    print(a) #返回bar的地址
    a() #执行bar
    
    例3、
    def foo():
        name = 'lhf'
        def bar():
            name = 'wupeiqi'
            print(name)
            def tt():
                print(name)
            return tt
    
        return bar
    r1 = foo()
    print(r1) #返回bar()的地址
    r2 = r1()
    print(r2)#返回tt()的地址
    r3 = r2()
    print(r3)#返回none
    
    
    
    ################匿名函数   lambda
    匿名函数不嫩太复杂 一行搞定
    例1、
    def calc(x):
        return x+1
    res = calc(10)
    print(res)
    >>>11
    
    func = lambda x:x+1
    print(func(10))
    >>>11
    
    函数式编程
    
    编程方法论:面向过程:基本编程单位也是函数 分析过程 一步一步
                          
                函数式=编程语言定义的函数+数学意义的函数
                        特点:不使用变量、不修改变量
                            例1、def foo(n):
                                            print(n)
                                        def bar(name):
                                            print('my name is %s' %name)
                                        foo(bar('alex'))
                                        >>>my name is alex
                                            None
                        高阶函数:1、函数的参数为是一个函数名 2、返回名包含函数
                        尾递归:在最后一步调用函数
        三大内置函数    map函数:例1、num_1 = [1,2,3,4,5,6]     顺序不变 每个数据处理一遍
    
                                基础def map_test(array):
                                        ret = []
                                        for i in array:
                                            ret.append(i ** 2)
                                        print(ret)
                                        return ret
                                    map_test(num_1)
                                
                                    
                                高级    def add_one(x):
                                        return x+1
                                    def map_test(func,array):
                                        ret = []
                                        for i in array:
                                            ret.append(func(i))
                                        print(ret)
                                        return ret
                                    map_test(add_one,num_1)
                                终极def map_test(func,array):
                                        ret = []
                                        for i in array:
                                            ret.append(func(i))
                                        print(ret)
                                        return ret
                                    map_test(lambda x:x+1,num_1)
                                map(func,array)  进行迭代 一个迭代器 得到一个可迭代的对象
                                    print(list(map(lambda x:x+1,num_1)))
                        filter函数:筛选
                                初级def filter_test(array):
                                        ret = []
                                        for p in array:
                                            if not p.startswith('sb'):  #startswith
                                                ret.append(p)
                                        return ret
                                    res = filter_test(moive_people)
                                    print(res)
                                    
                                高级def filter_test(func,array):
                                        ret = []
                                        for p in array:
                                            if not func(i):  #startswith
                                                ret.append(p)
                                        return ret
                                    res = filter_test(moive_people)
                                    print(res)
                                
                                终极print(list(filter(lambda n:n.startswith('sb'),moive_people))) #返回true 值
                                
                        reduce函数:num_list = [1,2,4,5]            一个序列转化为一个值
                                    # def mutiple(x,y):
                                    #     return x*y
                                    def reduce_test(func,array,int=None):
                                        res =array.pop(0)
                                        if int!=None:
                                            for num in array:
                                                res = func(res, num)
                                            return res*int
                                        else:
                                            for num in array:
                                                res = func(res,num)
                                            return res
                                    print(reduce_test(lambda x,y:x*y,num_list,7))    
    
                                from functools import reduce
                                print(reduce(lambda x,y:x+y,num_list))    
                
                
        map() 处理序列中每一个列表,得到的结果是一个迭代器,该迭代器元素个数及位置 与原来一样        
        filter()遍历序列中的每一个元素,判断每个元素得到布尔值,如果是    True则保留下来
            people = [
                {'name':'alex','age':1000},
                {'name':'wupeiqi','age':10000},
                {'name':'yuanhao','age':9000},
                {'name':'linhaifeng','age':18}
                ]
                print(list(filter(lambda p:p['age']<=18,people)))
        reduce    
                面向对象 
  • 相关阅读:
    面向对象(接口 ,多态)
    面向对象(继承,重写,this,super,抽象类)
    IO(字符流 字符缓冲流)
    ArrayList集合
    字符串常用API
    面向对象(类,封装,this,构造方法)
    不同类型问题代码训练
    java中的方法
    04慕课网《进击Node.js基础(一)》HTTP讲解
    《JavaScript设计模式与开发实践》——第3章 闭包和高阶函数
  • 原文地址:https://www.cnblogs.com/zy0718/p/8449001.html
Copyright © 2011-2022 走看看