python函数的参数传递

2022-07-2920:45:40编程语言入门到精通Comments1,269 views字数 2184阅读模式

调用函数的时候,主函数和调用函数之间总是离不开数据的传递,有了数据的传递,也就是参数的传递。参数的作用是用来传递数据给函数使用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

打个比方来说,我们买来了一个榨汁机,当我们加入苹果的时候会出来苹果汁,加入西瓜的时候会出来西瓜汁,参数就起到这样一个作用,参数通过主函数传递到被调用函数,然后被调用函数会返回给我们一个结果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

下面我们来学习参数的传递。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

 1. 形式参数和实际参数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

要学习函数的参数传递,我们首先要了解什么是形式参数和实际参数。我们继续拿上面的例子来说,我们在榨汁机中有一个容器来装水果,我们将水果放在这个容器里,然后榨汁器开始运转,形式参数和实际参数也类似这样的关系。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

形式参数为我们定义函数的时候再括号中定义的参数,我们在函数的内部会使用这个参数进行代码的编写,而实际参数为函数调用的时候传进来的参数,函数返回的结果是根据这个实际参数来代替形式参数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

看下面的例子:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

1
2
3
4
5
6
7
>>> A = 30
>>> def get_salary(days):
...     salary  = days * 300
...     print(salary)
...
>>> get_salary(A)
9000

在这上面这个例子中,函数在创建的时候使用的参数days为形式参数,在我们调用函数的时候,A即为实际参数,实际要带入到函数中使用的参数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

2. 位置参数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

我们在创建函数的时候可以在括号中定义多个形式参数,我们在调用的时候,参数的数量和位置需要和创建的保持一致。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

1) 参数的数量不一致文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

如果我们创建的函数中有2个形式参数,而我们调用的时候只使用了1个实际参数,会是什么样的结果呢,看下面的例子。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

1
2
3
4
5
6
7
>>> def get_message(address,number):
...     print(address,number)
...
>>> get_message('苏州')
Traceback (most recent call last):
  File "<stdin>", line 1in <module>
TypeError: get_message() missing 1 required positional argument: 'number'

我们可以发现当实际参数的数量不等于形式参数的数量时候,会抛出异常,具体的意思为缺少一个必要位置的参数number。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

2) 参数的位置不一致文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

当参数的位置不一致的时候会导致出现两种错误,一种是直接报错,因为我们在传参的时候会根据参数的性质而定义不同的类型,因此数据类型的错误会抛出异常。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

另外一种错误是传入的参数的数据类型是对的,但是位置是错的,这样会出现错误的输出结果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

 3. 关键字参数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

为了提高程序的可读性,在函数调用的时候还可以使用关键字参数调用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

我们通过计算容器的体积来了解关键字参数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

1
2
3
4
5
6
>>> def volume(length,width,height):
...     volume = length * width * height
...     print('体积为:',volume)
...
>>> volume(length=20,width=30,height=3)
体积为: 1800

使用关键字参数可以省去定义变量的过程,直接在函数调用的时候给参数进行赋值,然后传递到函数当中,最后返回结果。在这种传递方式中,参数位置的不同是不影响输出结果的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

4. 参数默认值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

当我们定义一个函数的时候,可以给函数的参数定义一个初始值,这样在我们调用函数的时候如果没有给出实际参数,那么函数会使用默认参数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

看下面的例子:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

1
2
3
4
5
6
7
>>> def volume(length=100,width=100,height=10):
...     volume = length * width * height
...     print(volume)
...
>>> volume()#不给出实际参数的时候会使用默认参数100000
>>> volume(10,10,10)#给出实际参数会传递实际参数给出输出结果
1000

通过上面的例子,如果我们在创建函数的时候已经给出了默认值,那么我们在使用函数的时候如果不给出实际参数则会自动使用默认参数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

5. 可变参数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

Python中函数的参数个数是可以变化的,也就是说参数的数量可以是不确定的,这种参数被称为可变参数。可变参数分为两种,一种是参数前加*,这种方式的可变参数在传递的时候是以元组的形式传递,一种是参数前加**,这种方式的可变参数在传递的时候以字典的形式传递,我们主要介绍一下第一种方式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

看下面的例子:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

1
2
3
4
5
6
7
8
>>> def add_number(*number):
...     add_num = 0
...     for in number:
...             add_num += i
...     print(add_num)
...
>>> add_number(1,2,3,4,5)
15

使用可变参数的时候,这些参数会被存放在一个元组中传递到函数里,因此我们要使用这些参数的时候可以使用遍历或者索引值进行使用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

函数的参数传递大致就是这些,想要学好函数,一定要掌握好参数的传递,参数的正确传递在函数的使用过程中至关重要。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26199.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/26199.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定