python教程入门学习Python函数定义及传参方式详解(4种)

Posted 梦子mengy7762

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python教程入门学习Python函数定义及传参方式详解(4种)相关的知识,希望对你有一定的参考价值。

这篇文章主要介绍了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种)的主要内容,如果未能解决你的问题,请参考以下文章

python 基础 4.0 函数的一般形式及传参

大爽Python入门教程 4-3 函数传参 形参实参 default*args**kwargs

Python入门教程第59篇 函数进阶之可变参数

初识python 函数(定义,传参,返回值)

Python入门教程第67篇 私有函数

Python 函数声明和调用