• 重制版 day 11函数基础


    day 11函数基础

    函数就是实现某一个特定功能的代码的封装

    函数就是将实现某一个或者某一类功能的代码打包,在需要使用这个功能的时候,直接调用包,直接使用封装的代码函数

    函数的作用:将重复的操作封包,在使用的时候进行调用

    函数的分类:

    系统函数:系统创建的函数,本身自带的函数

    自定义函数:程序员自己创建的函数

    定义函数

    语法:

    def 函数名(形参列表):

    ​ 函数说明文档

    ​ 函数体

    说明:

    1)def-关键字;固定写法

    2)函数名-由程序员自己命名;

    ​ 两个要求:是标识符,不是关键字

    ​ 三个规范:见名知义

    ​ 所有的字母都小写,多个单词用下划线隔开

    ​ 不使用系统的函数名,类名和模块

    3)() —固定写法

    4)形参列表-以’变量名1,变量名2,变量名3,…'的形式存在,根据情况变量名可以为0,也可以为多个

    作用:将函数外部的数据传递到函数里面

    确定形参的方法:看实现函数的功能需要不需要额外的数据,需要多少个数据

    5)函数说明文档-多行注释,对函数功能进行解释

    6)函数体-实现函数功能的代码

    # 练习:定义一个函数,删除列表中所有的空值(包括None,和其他空值(比如空字符串、空列表、空元组等))
    def del_None(list):
        for i in list[:]:
            # if bool(i)==0 and i!=0: 条件对应的表达式如果不是布尔,转换成布尔看结果是否为True
            if (not i) and (i !=0 ):
                list.remove(i)
        print(list)
    list1=[None,'',[],1,[123],{},0]
    del_None(list1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    调用函数

    语法:

    函数名(实参列表)

    说明:

    1)函数名-明确调用哪个函数,必须是已经定义过的函数名

    2)( ) --固定写法

    3)实参列表 -以’数据1,数据2,数据3,…'的形式存在,每一个数据就是一个实参

    定义函数不会执行函数体,调用函数的时候才会执行函数体

    函数调用过程

    每次在调用函数的时候,执行步骤为:

    第一步:回到函数定义的位置

    第二步:传参

    第三步:执行函数体

    第四步:确定函数返回值

    第五步:回到函数调用的位置,接着往后执行

    函数的参数

    实参类型:

    根据实参的提供方式,将实参分为位置参数和关键字参数

    位置参数:以’实参1,实参2,实参3,…'的形式存在,让实参和形参一一对应,顺序改变,实参值改变

    关键字参数:以’形参1=实参1,形参2=实参2,…‘的形式存在,通过’='号对应,顺序改变,实参值不会改变

    注意:位置参数和关键字参数可以一起用,但位置参数的位置在关键字参数的前面

    参数默认值:

    定义函数的时候可以通过’形参名=数据’的方式给形参赋值默认值;在调用的时候,有默认值的形参,可以不用传参

    如果需要跳过有默认值的参数,使用关键字参数传参

    注意:在定义函数的时候,没有默认值的形参必须在有默认值的形参前面

    def func2(x,y=10):
        print(x,y)
    func2(2)  # x=2 y默认=10
    func2(100,20) # x=100,y=20
    
    • 1
    • 2
    • 3
    • 4

    参数类型说明:

    对形参类型进行说明,可以在函数体里方便代码提示

    没有默认值的参数类型说明,直接在形参后面加:类型名

    存在默认值,默认值的类型就是形参的数据类型

    返回值数据类型说明: -> 数据类型

    *对应的不定长参数:

    参数个数不确定的时候可以使用不确长参数

    定义函数的时候,如果在某一个形参前面加*号,这个形参会变成不定长参数,可以传参0个或者多个参数

    带*的不定长参数的本质是一个元组,接收到的所有的实参是这个元组的元素

    def sumN(*nums):
        sum1=0
        for i in nums:
            sum1+=i
        print(sum1)
    sumN(5,123,23)
    sumN(45678,12231,5234)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    定义函数的时候单独使用*号,调用函数的时候,*号后面的参数必须使用关键字参数传参

    def fun1(x,*,y,z)
    	pass
    fun1(1,y=2,z=2)
    
    • 1
    • 2
    • 3
  • 相关阅读:
    TPH-YOLOv5: 基于Transformer预测头的改进YOLOv5用于无人机捕获场景目标检测
    在no branch上commmit后,再切换到其他分支,找不到no branch分支的修改怎么办?
    心脏出血漏洞复现(CVE-2014-0160)
    华云数据张华林:投身数字蓝海 绘就云上强国
    【指针内功修炼】深度剖析指针笔试题(三)
    蓝桥杯每日一题2023.11.22
    【React】React学习:从初级到高级(四)
    JWT详细讲解(保姆级教程)
    2023年即将到来软件测试在IT行业中的地位还算稳固吗?
    黑马Java第10讲—继承和修饰符
  • 原文地址:https://blog.csdn.net/Feifei_peng/article/details/126109197