码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python基础入门篇【22】--python中的函数:初时函数及函数的参数


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

    文章目录

    • python中的函数
      • 初时函数
        • 函数的定义
        • 函数的分类
        • 创建函数--def
        • 函数结果的返回--return
      • 函数的参数
        • 什么是函数的参数?
        • 必传参数
        • 默认参数
        • 不确定参数-可变参数
        • 参数规则
      • 函数参数的数据类型
        • 参数数据类型的定义

    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)]

  • 相关阅读:
    Redis哨兵
    30 分钟手把手带你入门数据脱敏
    领导:谁再用redis过期监听实现关闭订单,立马滚蛋!
    Spring 6【数据校验Validation、JSR 303 和 Hibernate 实现】(十三)-全面详解(学习总结---从入门到深化)
    64-65 - C++中的异常处理
    js继承,原型链继承,构造函数继承,组合式继承,原型式继承,寄生式继承,组合寄生式继承,extends继承
    一分钟图情论文:《数字阅读是否比传统阅读更具环境可持续性?来自系统性文献综述的证据》
    【MATLAB教程案例32】基于matlab的交通标志检测分割算法的仿真——形态学处理,膨胀,腐蚀,形状检测,颜色模型,小波滤波等知识的综合应用
    『FPGA通信接口』串行通信接口-IIC(2)EEPROM读写控制器
    TCP协议的核心机制
  • 原文地址:https://blog.csdn.net/weixin_44629511/article/details/125973234
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号