zoukankan      html  css  js  c++  java
  • 函数

    一、匿名函数

    匿名函数lambda:没有名字的函数
    特点:
    临时存在,用完就销毁
    匿名函数通常不会单独使用,配合内置函数一起使用

    lambda x,y : x+y
    

    解释:左边的相当于函数的形参,右边相当于函数的返回值

    1.求和普通方法

    def my_sum(x, y):
        return print(x+y)
    my_sum(1, 2)
    

    img

    2.匿名函数配合内置求和:

    res = (lambda x, y: x+y)(11, 20)
    print(res)
    

    img

    二:比较薪资,返回人名:

    k = {'jeff': 8000,
         'nick': 1000,
         'tank': 3000,
         'mary': 10000,
    def index(name):
    
      return k[name]
      print(max(k, key=index)) # 函数返回什么比较什么
    
    
    # max内置函数,第一步:拿到字典key(jeff)
                    第二步,把key传给index函数
                    第三步,执行index(jeff),返回字典k[jeff],5000
                    第四步,依次拿到5000,1000,3000,10000,进行比较
                    第五步,返回最大值对应的人名
    """
     
    

    img

    2.把index写成匿名函数:

    print(max(k, key=lambda name: k[name]))
    print(min(k, key=lambda name: k[name]))
    

    img

    三、补充ascll码表:

    """
    A-Z 65-90
    a-z 97-122
    """
    print(chr(122)) #查看ascll码对应的值
    

    img

    二、函数的递归

    1.特点

    1.函数在调用阶段直接或间接的又调用自己

    2.递归函数不需要考虑循环的次数,只需把握结束的条件

    # 查看递归深度:默认1000

    import sys
    print(sys.getrecursionlimit())  # 不是很精确
    

    1.递归死循环:

    def index():
        print("这是第一个函数")
        login()
    
    def login():
        print("这是第二个函数")
        index()
    
    index()
    

    img

    2.函数的递归分为两个阶段:

      1.回溯:重复的过程,一层层降低难度

      2.递推:一层层往回推导的过程

    要求:
    第一个人18岁,第二个人比第一个人大两岁,第三个人比第二个人大两岁,第四个人比第三个人大两岁。。。
    age(5)=age(4)+2
    age(4)=age(3)+2
    age(3)=age(2)+2
    age(2)=age(1)+2
    age(1)=18
    
    

    img

    def age(n):
        if n == 1:
            return 18
        return age(n-1) + 2
    res = age(5)   # 第五个人的年龄
    print(res)
    
    

    3.递归使用的例子:依次打印列表中的数据

    复杂度降低:列表越来越短

    递归函数:

    l = [1 ,[2 ,[3 ,[4 ,]]]]
    def main(l):
        for i in l:
            if type(i )is int:  # 判断是否为整型
                print(i)
            else:
                main(i)
    main(l)
    
    

    三、局部全局修改

    global:局部修改全局 ,逗号隔开修改全局
    nonlocal:局部修改局部,逗号隔开修改全局

    1.局部修改全局

    关键字 global 申明

    # global 局部修改全局
    x = 1
    def func():
        global x  # 修改全局变量
        x = 2
    func()
    print(x)
    
    
    

    2.局部修改局部

    关键字 nonlocal 申明

    # nonlocal 局部修改局部
    
    def func():
        x = 1
        def func1():
            nonlocal x   # 声明修改局部
            x = 2
        func1()
        print(x)
    func()
    
    

    四、常用内置函数

    1.map 映射 基与for循环

    k = [1, 2, 3, 4, 5, 6]
    print(list(map(lambda x: x + 1, k)))  # map 基与for循环   每一个数+1
    
    

    2.zip拉链 基与for循环

    • 取最短的拉
    k1 = [1, 2, 3, 4, 5]
    k2 = ['jeff', 'tank', 'jason']
    k3 = ['a', 'b', 'c']
    print(list(zip(k1, k2, k3)))
    # 结果:[(1, 'jeff', 'a'), (2, 'tank', 'b'), (3, 'jason', 'c')]
    
    

    3.filter 过滤 基与for循环

    k = [1, 2, 3, 4, 5]
    print(list(filter(lambda x: x != 3, k)))   # 后面可以加条件
    
    

    4.sorted 排序

    k = ['jeff', 'tank', 'jason']
    k.sort()   # 升序
    k.sort(reverse=True)  # 降序
    print(k)
    print(sorted(k))  # 升序
    print(sorted(k, reverse=True))  # 降序
    k.reverse()              #逆序
    
    

    5.reduce 额外的

    from functools import reduce

    from functools import reduce
    k = [1, 2, 3]
    print(reduce(lambda x, y: x+y, k, 10))   # 1+2+3+10   ,10是额外的
    # 结果: 16
    
    # 当初始值不存在的时候,按照下面的规律
    # 第一次先获取两个元素 相加
    # 之后每次获取一个与上一次相加的结果再相加
    
    
  • 相关阅读:
    《中断学习(一) —— Linux中断流程以及处理机制》
    《C语言知识点 —— 字符串指针和字符串数组的区别》
    《驱动实例 —— 触发外部中断后通过异步通知机制发送信号给用户态》
    《驱动学习 —— 杂项设备》
    玩转----adb adb monkey命令及介绍
    玩转----黑盒技术设计测试用例的方法主要有
    玩转----LoadRunner具体流程
    玩转----软件立项阶段
    玩转----Linux之ant安装部署
    玩转----Ubuntu 16.04安装JDK并配置环境变量
  • 原文地址:https://www.cnblogs.com/WQ577098649/p/11887409.html
Copyright © 2011-2022 走看看