python的函数参数

一、概述

1、前文已经提过位置参数、默认参数,这两种是最常用的参数。

2、动态参数即不限定参数个数,以一种动态的方式接受传参的个数。

3、python的动态参数有两种,分别是 ‘ args ’ 和 ‘ **kwargs ’ 。他们区别在于是一个星号还是两个星号,而不是 args 和kwargs ,实际上定义成 ‘ cat ’ 和 ‘ dog’ 也是可以的,只是按照约定俗称的写法,通常写成 ‘ *args ’ 和 ‘ kwargs ’。

4、注意:动态参数必须放在所有位置参数和默认参数后面!

二、一个星号

1、一个星号的动态参数表示接收任意个参数,调用时会将实际参数打包成一个元组传入。如果参数是个列表,则会将整个列表当成一个参数传入。

如图所示,动态参数传入的4,5,6会被打包成一个元组传入到函数内部。

2、如果当传入的动态参数是一个列表,则会将整个列表当成一个参数传入。

如图,传入的[4,5,6]被当成元组的中的一个元素传入了。如果想把列表也当成当个元素逐个传入呢?可以使用*传参!如下图所示。

在传参是添加一个*,就可将列表中的元素逐个传入。实际上所有序列类型的元素都可以是用这种方式传递,比如字符串、元组、字典等。

3、一个星号的特殊情况!

当一个星号的动态参数位于n个默认参数后面时,python会自动将一个星号的动态参数的前n个赋值为默认参数。

如图所示,默认将动态参数的4,5赋值给了c、d,这是python内部的传参规则。

三、两个星号

1、两个星号的动态参数,会将传入的参数打包成字典传给函数。

2、而如果当传入的动态参数是一个字典时,程序会报错。为了解决这个问题,可以使用两个*将字典值逐个传入。

3、两个星号的动态参数必须置于一个星号动态参数的后面!

四、万能参数 & 关键字参数

1、一个星号的动态参数 + 两个星号的动态参数 = 万能参数!

2、万能参数可能不受参数的个数限制,在灵活的同时也带了一些麻烦。

例如,我们在招聘的时候要求必须传入‘age’这个参数,就可以使用关键字参数进行限定。关键字参数使用 进行区别,即 号后面的内容都是关键字参数。

注意 :关键参数在调用时必须船用参数名称。

3、对于动态参数里面的关键参数,不需要加 * ,直接在动态参数后面限定即可。

注意:关键参数必须要传,但是可以穿空缺值。下面这种方式可以。

但下面这种方式就会报错。

原文链接: python的函数参数 版权所有,转载时请注明出处,违者必究。
注明出处格式:流沙团 ( https://gyarmy.com/post-715.html )

发表评论

0则评论给“python的函数参数”