• Python基础入门篇【22】--python中的函数:初时函数及函数的参数


    前言
    作者简介:短尾巴小鳄鱼 ,一位不放弃自己的上进卷妹
    💬 如果文章知识点有错误的地方,请留言指正~和大家一起学习,一起进步
    💬 人生格言:昨日种种,皆成今我。今日种种,方成新我。切莫踌躇,莫停留,莫沉溺💬
    如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦

    python中的函数

    初时函数

    函数的定义

    函数:将一个事情的步骤封装在一起并得到最终的结果,我们也把实现一个函数的功能称作实现一个方法

    函数名代表了整个函数要做的事情

    函数体是实现函数功能的流程

    在python中,我们可以把我们的功能都封装到函数中以便重复使用。

    函数的分类

    • 内置函数

      python中已经封装好可以直接使用的函数

      如:print、id、int、str、max、min、range

    • 自定义函数

    创建函数–def

    def是定义函数的关键字

    def name(args...):
        todo something..
        返回值
    
    • 1
    • 2
    • 3

    函数结果的返回–return

    return是将函数结果返回的关键字

    return只能在函数体内使用

    return支持返回所有的python类型,返回的数据可以直接赋值给一个变量

    函数里return后面的代码不会被执行,效果相当于break

    def add(a,b):
        c = a + b
        return c
    
    result = add(a=1, b=1) # result来接收函数的返回值
    print result
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    例子:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ot26o1o0-1658726902385)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220722143524350.png)]

    函数的参数

    什么是函数的参数?

    定义函数的时候,在括号内以变量的形式定义函数的参数,方便函数内部使用这些参数。

    必传参数

    在定义函数的时候,没有默认值且必须在函数执行的时候传递进去的参数,且顺序与参数顺序相同,就是必传参数

    必传参数不传会报错

    默认参数

    在定义函数的时候,定义的参数含有默认值。

    如果默认参数在调用函数的时候给予了新的值,函数将优先使用后传入的值

    def add(a, b=1, c)   # 其中a,c是必传参数,b是默认参数
    
    • 1

    例子:

    在这里插入图片描述

    不确定参数-可变参数

    没有固定的参数名和数量(不知道要传的参数名具体是什么)

    def add(*args,**kwargs): 
        ...
        
    add(1,2,3,4,name='xiaoming',age=20)
    # *:将无参数名的值合并成元组
    # **:将有参数与默认值的参数合并成字典
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    上面调用add函数的例子中,参数1,2,3,4将被*args合并成一个元组,而name='xiaoming,age=20'将被**kwargs合并成一个字典:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lmJKCH42-1658726902388)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220725093618779.png)]

    思考:如果想要往可变参数中传入元组或字典呢,像上面那样直接用逗号隔开的方式还可以正确传入吗?

    不可以,运行结果如下,会将两个参数都传入第一个可变参数,且合并成了元组:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hW8dAcCd-1658726902389)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220725124935650.png)]

    此时,我们只需要在传入参数前加入*就可以解决这个问题:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-531jzhEB-1658726902390)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220725125052252.png)]

    参数规则

    参数的定义从左到右依次是必传参数,默认参数,可变元组参数,可变字典参数。顺序是不可变的

    我们传入参数时也要按照这个顺序。但是还是推荐用赋值语句的方式传入,方便我们清楚的看到哪个值对应的哪个参数。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tnaw7GFr-1658726902391)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220725125258040.png)]

    特例,当我们使用赋值的方式传参的时候:

    1. 如果只有必传参数和默认参数,顺序可以变化。
    2. 如果有必传参数和可变参数,需要将可变参数放在第一位。否则会报错:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rdbkXhtH-1658726902391)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220725130012645.png)]

    修改后如下:这种方式虽然可以避免报错,但并不推荐,我们还是优先按照必传参数->默认参数->可变元组参数->可变字典参数的顺序来定义参数。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w9gQMIqz-1658726902392)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220725130433635.png)]

    函数参数的数据类型

    参数数据类型的定义

    def person(name:str,age:int=30)
    	print(name,age)
    
    • 1
    • 2

    注意:

    1. 只有在python3.7之后才支持对函数数据类型的定义
    2. 函数不会对参数类型进行验证

    例子:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0TXtKFA0-1658726902392)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220725131803071.png)]

  • 相关阅读:
    06【工厂设计模式】
    TPS7A3301RGWR稳压器 AK4493EQ音频DAC,电路原理图
    计算图片中两个任意形状多边形相交部分的大小
    《机器人SLAM导航核心技术与实战》第1季:第6章_机器人底盘
    【算法|动态规划No.19】leetcode413. 等差数列划分
    Leetcode 667. 优美的排列 II
    【Linux】信号的保存
    穿越时空:未来云计算的奇妙世界
    A股风格因子看板 (2023.10 第03期)
    java笔记整理
  • 原文地址:https://blog.csdn.net/weixin_44629511/article/details/125973234