这篇文章主要介绍了Python函数定义及传参方式详解(4种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、函数初识

1、定义:将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。

2、好处:代码重用;保持一致性;可扩展性。

3、示例如下:

|

`# -*-coding:utf-8-*-``def` `sayHello():``print``(``'Hello world!'``)``sayHello()`

|

二、函数传参方式

如上面的实例是函数中最基础的一种,是不传参数的,说到这里,我们有必要了解一下何为函数参数:

1、函数参数:

形参变量: 只有在被调用时才分配内存单元,调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。

函数调用结束返回主调函数后不能再使用该形参变量

实参:可以是常量,变量,表达式,函数等,无论实参是何种类型的量,在进行函数调用,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。

2、函数传参的分类

<1> 位置参数

位置参数顾名思义,就是调用函数时传的实参与函数的形参位置上一一对应的参数。

如下实例:

`#位置参数``print``(``'\n以下是位置参数传值\n'``)``def` `stu_info(name,age,major,country):``print``(``'--------学生信息-------'``)``print``(``'姓名:'``,name)``print``(``'年龄:'``,age)``print``(``'专业:'``,major)``print``(``'国籍:'``,country)``stu1` `=` `stu_info(``'Jack'``,``21``,``'Chinese'``,``'CN'``)` `# 实参依次与函数中的name,age,major,country对应``stu2` `=` `stu_info(``'Frank'``,``20``,``'JP'``,``'UN'``)``stu3` `=` `stu_info(``'Rose'``,``19``,``'Art'``,``'UK'``)`

|

<2> 默认参数

默认参数就有点不同了,是你在函数形参中定义好的,当实参中未传对应的参数时,它就派上用场了,默认给你加上。是不是有点贴心呢?

注意:默认参数,必须放在位置参数之后,否则会出错

实例如下:

|

|

`#默认参数``print``(``'\n以下是默认参数传值\n'``)``def` `stu_info(name,age,major,country` `=` `'CN'``):``# country设为了默认参数,必须放在位置参数之后,否则会出错``print``(``'--------学生信息-------'``)``print``(``'姓名:'``,name)``print``(``'年龄:'``,age)``print``(``'专业:'``,major)``print``(``'国籍:'``,country)``stu1` `=` `stu_info(``'Jack'``,``21``,``'Chinese'``)` `# 此处未传对应的值,但形参中已经定义了,所以不用担心找不家了!``stu2` `=` `stu_info(``'Frank'``,``20``,``'JP'``)  ``# 你也是的``stu3` `=` `stu_info(``'Rose'``,``19``,``'Art'``,``'UK'``)  ``# 既然你已经传参了,就随你了。`

|

<3> 关键参数

正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只需指定参数名即可(指定参数名的参数就叫关键参数),但记住一个要求就是,关键参数必须放在位置参数(以位置顺序确定对应关系的参数)之后。

还是奉上实例:

|

`#关键参数,不能重复赋值,且指定的参数应在位置参数之后``print``(``'\n以下是关键参数传值\n'``)``def` `stu_info(name,age,major,country` `=` `'CN'``):` `#``print``(``'--------学生信息-------'``)``print``(``'姓名:'``,name)``print``(``'年龄:'``,age)``print``(``'专业:'``,major)``print``(``'国籍:'``,country)``stu1` `=` `stu_info(``'Jack'``,``21``,``'Chinese'``)``stu2` `=` `stu_info(``'Frank'``,``20``,major``=``'JP'``)` `# major即为关键参数,单独指定,但必须放在位置参数之后``stu3` `=` `stu_info(``'Rose'``,``19``,``'Art'``,country``=``'UK'``)`

|

<4> 非固定传参

这种传参方式可就大有讲究了,花样可谓繁多,自然本领也就大多了,不信往下看。

可以细分为两类:

非固定传参方式一:

可同时指定多个用户,传过来的所有参数打包成元祖。如下:

#-*-coding:utf-8-*-

#方式一

`def` `send_alert(msg,``*``users):` `# '*users‘ 表示非固定传参,可同时指定多个用户,传过来的所有参数打包元祖``for` `u` `in` `users:``print``(``'报警!请及时查看...'``,u,msg)``send_alert(``'你的系统已濒临崩溃!'``,``'cc'``,``'hyt'``,``'yuq'``,``'dy'``)`

#方式二

`def` `send_alert(msg,``*``users):` `# '*users‘ 表示非固定传参,可同时指定多个用户,传过来的所有参数打包元祖``for` `u` `in` `users:``print``(``'报警!请及时查看...'``,u,msg)``send_alert(``'你的系统已濒临崩溃!'``,``*``[``'cc'``,``'hyt'``,``'yuq'``,``'dy'``])``'''``如果列表前不加 * 号,整个列表就会被当作元组里的一个元素,``加 * 号后就相当于列表里每个元素都是元祖的一个元素了。就会向元组里的每个成员都发出讯息了。``'''``def` `send_alert(msg,``*``users,age):``for` `u` `in` `users:``print``(``'报警!请及时查看...'``,u,msg)``send_alert(``'你的系统已濒临崩溃!'``,``'sc'``,``'qh'``,age``=``22``)``'''``'*users‘此时会默认获取前一个位置参数之后所有的元素,若传参时最后不指定关键参数就会报错,age无法获取传值``'''`

|

**非固定传参方式二: **

可同时指定多个用户,传过来的所有参数打包成元组或字典。如下:

`#-*-coding:utf-8-*-``def` `func(name,``*``args,``*``*``kwargs):` `# 形参依次是位置参数,元组,字典``print``(name,args,kwargs)``func(``'Hope'``,``22``,``'CN'``,``'tomorrow'``)` `#输出:Hope (22, 'CN', 'tomorrow') {}``func(``'Try'``,``21``,``'will'``,addr``=``'HG'``,num``=``666``)` `#输出:Try (21, 'will') {'addr': 'HG', 'num': 666}``dit` `=` `{``'major'``:``'Math'``,``'interest'``:``'reading'``}``func(``'want'``,``*``[``'day'``,``'up'``],``*``*``dit)` `#输出:want ('day', 'up') {'major': 'Math', 'interest': 'reading'}`|

小伙伴们到这里,Python中函数常用的传参方式你就都了解了?是不是又长姿势了呢!

【python教程入门学习】Python函数定义及传参方式详解(4种)相关推荐

  1. [python教程入门学习]Python标准库映射类型与可散列数据类型的关系

    本文章向大家介绍Python标准库映射类型与可散列数据类型的关系,主要包括Python标准库映射类型与可散列数据类型的关系使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

  2. [python教程入门学习]Python是什么?

    Python 是一种高级计算机编程语言,作者是荷兰人吉多·范罗苏姆.在 1989 年圣诞节期间,吉多打算开发一种新的脚本语言,用来取代 ABC 语言,就这样,一门新的编程语言 Python 诞生了. ...

  3. [python教程入门学习]python学习笔记(CMD执行文件并传入参数)

    本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

  4. 【python教程入门学习】Python实现自动玩贪吃蛇程序

    这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹 ...

  5. 【python教程入门学习】普通人学python有意义吗

    普通人学python有意义吗?普通人能不能学习python语言,难不难,是否容易上手,学了python能做那些事情,能挣多少钱?这些问题是很多同学关心的问题,今天python教程入门学习就从小白同学的 ...

  6. 【python教程入门学习】Python扑克牌21点游戏实例代码

    大家好,本篇文章主要讲的是Python扑克牌21点游戏实例代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览 废话还是说太多了 直接上代码 | `import` `random ...

  7. 【python教程入门学习】学python要多久,0基础学python有多难

    学python要多久,0基础学python有多难,这是很多想学习python语言同学绕不开的问题,都害怕花完钱最终没有应有的回报!对于毫无经验0基础的同学来说学习python什么最重要,方向选对坚持下 ...

  8. 【python教程入门学习】第一个Pygame程序

    Pygame 作为一个入门级的游戏开发库,其实并不难学,只要掌握 Python 编程的相关知识就能很轻松地掌握它. Pygame 语法简单.明了,秉持了 Python 语言一贯的风格.同时,它作为一个 ...

  9. 【python教程入门学习】Python新年炫酷烟花秀代码

    先介绍下 Pygame 绘制烟花的基本原理,烟花从发射到绽放一共分为三个阶段: 1,发射阶段:在这一阶段烟花的形状是线性向上,通过设定一组大小不同.颜色不同的点来模拟"向上发射" ...

最新文章

  1. oracle11g R2 出现新增的表在导出的时候报EXP-00011: xx does not exist
  2. iOS-英雄联盟人物展示
  3. java将xml中的标签名称转为小写_深入学习Java Web(七): JSTL标签库
  4. java有道翻译_Java 调用 有道翻译API
  5. 在html中base的作用,html中base标签的作用是什么
  6. python北风网培训班视频
  7. LayaAir TTF字体使用
  8. 10种JavaScript特效实例让你的网站更吸引人
  9. H5 移动端浏览器调用微信的分享功能
  10. 高速公路收费标准c语言,c语言课程设计报告-高速公路收费系统
  11. 【2023秋招面经】兴业数金面试总结
  12. 几个java小问题代码(大神不喜勿喷)
  13. 怎么合并或注销重复LinkedIn领英帐号?
  14. Mac 上安装mysql
  15. 土地估价师继续教育培训心得体会
  16. FFmpeg的HEVC解码器源代码简单分析:CTU解码(CTU Decode)部分-PU
  17. python androidhelper 播放 音频_基于外置UAC音频设备做的一款录音Android Demo
  18. 计算机的硬件系统的组成
  19. vb.net 获取系统图标_【系统更新V4】优麒麟 20.04 LTS持续完善!优化高清屏支持,上架6款新应用!...
  20. opencv 重映射、x轴翻转,y轴翻转,xy轴镜像,图像缩小

热门文章

  1. PyTorch官方培训教程上线:从基本概念到实操,小白也能上手
  2. EMNLP2020:Hugging Face获最佳demo
  3. 拿到腾讯字节快手 offer 后,他的 LeetCode 刷题经验在 GitHub 火了!
  4. 哪些“双一流”更得华为偏爱?这所高校人数远超清北华五
  5. 炫技,从12.67s到1.06s的网站性能优化实战
  6. Git教程:最详细、最傻瓜、最浅显、真正手把手教!
  7. 基于itchat的个人情感分析
  8. MinIO分布式专题(第一章、一文教你搭建MinIO单机版)
  9. Zookeeper源码分析:集群模式启动概述
  10. 跳跃游戏(判断是否可以跳到最后一个下标)