• 重制版 day 12 函数的进阶


    day 12 函数的进阶

    函数的返回值

    从函数内部传递到函数外部的数据,return后面的值就是返回值.

    获取函数调用表达式的值,就是获取这个函数的返回值

    一个函数只有1个返回值,多个数据作为函数的返回值返回,可以在return后面写多个数据

    return还可以提前结束函数,函数体遇到return,直接结束

    def func2(a,b):
        reslut1=a+b
        reslut2=a*b
        return reslut1,reslut2
    func2(10,20)
    
    def func3():
        print('+++++++')
        print('+++++1++')
        return   # 相当于 return None
        print('+++++2++')  # 后面无效代码,无法执行
    print(func3())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    变量作用域

    变量作用域:变量在完成定义后,可以使用的范围

    变量分为全局变量,局部变量

    全局变量:没有定义在函数里面或者类里面的变量都是全局变量,从定义开始,到程序结束,都能使用

    局部变量:定义在函数里面的变量是局部变量(形参也是局部变量;定义在类里的变量叫做属性)

    全局变量默认保存在全局栈区间中,程序结束前可以随时使用

    局部变量默认保存在函数对应的临时栈区间,调用结束后,消失

    在函数中定义变量的时候,可以在定义变量前加global关键字,让函数中的变量保存在全局栈区间中,这样就可以随时使用.

    如果要在函数中修改一个全局变量的值,必须先用global对变量进行说明.

    函数参数的确定

    实参给怎样的数据,由参数在函数体中的使用方式决定

    实参高阶函数-函数的参数是函数

    如果一个参数是函数的时候,传参有两种方式:1)普通函数的函数名 2)匿名函数

    匿名函数

    匿名函数本质还是函数,用来实现简单的功能

    语法:

    函数名=lambda 形参列表:返回值

    相当于:

    def 函数名(形参列表):

    ​ return返回值

    # 示例1 定义一个函数求两个和
    sum2=lambda num1,num2:num1+num2
    
    print(sum2(10,20))  # 30
    print(sum2(num1=100,num2=200)) # 300
    
    • 1
    • 2
    • 3
    • 4
    • 5

    常用的实参高阶函数

    1.max,min,sorted

    使用方法:

    1)max(序列) --直接比较序列元素大小,求出最大值

    2)max(序列,key=函数) --按照函数制定的比较规则比较元素大小,求出最大值

    ​ 函数的要求:a.有且只有一个参数(参数代表序列中每一个元素)

    ​ b.需要有一个返回值(返回值是比较的对象,也就是参数和元素之间的关系)

    # 示例1.求nums中值最大的元素
    nums=[12,23,49,23,83,45,67]
    result=max(nums,key=lambda item:item)
    print(result)
    # 练习1:求nums中十位数最大的元素:  90
    nums = [9108, 23, 167, 90, 556, 149]
    result=max(nums,key=lambda item:item%100//10)  # 取十位数 nums//10%10  or  nums%100//10
    print('练习1:',result)
    # 练习2:求nums中绝对值最小的元素
    # abs(数据) -返回指定数据的绝对值
    nums = [-992, 12, 78, -34, 99]
    result=min(nums,key=lambda item:abs(item))
    # result=min(nums,key=lambda item:item**2)  # 平方越大,绝对值越小
    print('练习2:',result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2.map -基于原序列中元素根据要求创建一个新的序列

    使用方法:

    1)map(函数,序列) --根据函数制定的规则,将指定序列的元素转化为新序列的元素

    ​ 函数的要求:a.有且只有1个参数(参数代表序列中的元素)

    ​ b.有返回值(返回值对应新序列中的元素)

    2)map(函数,序列1,序列2,序列3…)

    函数的要求:a.有且只有n个参数(参数代表序列中的元素)

    ​ b.有返回值(返回值对应新序列中的元素)

    # 示例1:创建一个列表,列表中的元素是nums中所有元素的个位数
    nums=[82,36,13,64,34,92,71]
    new_nums=[i%10 for i in nums]
    result=map(lambda item:item%10,nums)  # 结果显示为迭代器
    print('示例1:',list(result))
    print(new_nums)
    # [2,6,3,4,4,2,1] 列表推导式也能用 nums=[i%10 for i in nums]
    
    # 示例2.将A和B中的元素对应求和产生新的系列
    A=[12,23,31,41,51]
    B=[23,41,231,23,45]
    result=map(lambda i1,i2:i1+i2,A,B)
    print(list(result))
    
    # 练习1:将nums中所有的元素乘以10
    nums = [82, 67, 89, 6617, 90, 23, 71]
    result=map(lambda item:item*10,nums)
    print('练习1:',list(result))
    
    # 练习2:基于scores创建一个列表,列表中元素根据nums中元素确定为'及格'或者'不及格'
    scores = [82, 67, 89, 66, 90, 23, 71]
    # ['及格', '及格', '及格', '及格', '不及格', '及格']
    result=map(lambda item:'及格'if item>=60 else'不及格',scores)
    print('练习2:',list(result))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    3.reduce-将序列中的所有元素,通过制定的规则合并成一个新的数据

    使用方法:

    reduce(函数,序列,默认值)

    函数要求:a.有且只有2个参数(第一个参数指向默认值,第二个参数指向序列中的所有元素)

    ​ b.需要返回值(描述合并方式,说明结果是默认值和序列中的元素是怎么样操作得到的)

    求和默认值设为0

    求乘积默认值设为1

    合并为字符串默认值设为空字符串

    注意:reduce使用之前需要先导入

    from functools import reduce

    from functools import reduce
    
    • 1
    # 示例1:求和nums所有元素的和
    nums=[10,20,30,40]
    result=reduce(lambda i,item:i+item,nums,0)
    print(result)
    
    # 示例2:求nums所有的元素的乘积
    nums=[10,20,30,40]
    result=reduce(lambda i,item:i*item,nums,1)
    print(result)
    
    
    # 示例3:求nums所有的元素个位数的和
    nums=[27,23,45,26]
    result=reduce(lambda i,item:i+item%10,nums,0)
    print(result)
    
    # 示例4:将所有元素合并成一个字符串:
    nums=[23,231,412,51]
    result=reduce(lambda i,item:i+str(item),nums,'')
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    记一次react-hooks项目获取图表图片集合并生成pdf的需求
    用浏览器快速开启Docker的体验之旅
    STM32CUBEIDE(11)----输出PWM及修改PWM频率与占空比
    Kubernetes部署集群碰到的问题解决
    Optional
    虹科教您 | 可实现带宽计量和延迟计算的时间敏感网络测试工具RELY-TSN-LAB操作指南与基本功能测试
    GUI编程--PyQt5--QTreeWidget
    易用且免费的在线3D交互编辑器?
    2019年中国政企机构网络安全形势分析研究
    php练习01
  • 原文地址:https://blog.csdn.net/Feifei_peng/article/details/126129770