# Python函数参数类型解释

> 作者/来源: UCloud 运营管理员
> 发布时间: 2022-09-21T06:28:00.000Z
> 分类: 其他
> 标签: Python
> 原文链接: http://117.50.162.249:3000/yun/articles/2487

---

# Python函数参数类型解释

> 来源: https://www.ucloud.cn/yun/127804.html
> 作者: 89542767
> 发布日期: 发布于2022-09-21 14:28

小编写这篇文章的主要目的，主要是给大家介绍一下关于Python函数的相关实例，主要想给大家解答，其主要的函数参数类型有什么，下面就给大家详细的进行解答下。

**1、Python的函数参数的类型**

　　必传参数：调用函数时必须传入的参数，函数定义时只定义参数名

　　关键字参数：传入时以函数的参数名值对的方式传入

　　默认参数：函数定义时为参数默认设置一个值，调用时不传输参数即以默认值处理

　　不定长参数：以\*修饰或者\*\*修饰的参数;\*修饰的参数是一个元组(tuple),\*\*修饰的参数必须是字典(dict)，通常写作\*args或者\*\*args

**2、Python的必传参数**

　　传入的参数个数必须与形参的数量一致

```
　#coding:utf-8
　　#Author:YangXiaoPeng
　　def demo01(a,b):
　　print(a,type(a))
　　print(b,type(b))
　　#demo01(1)#TypeError missing 1 required positional argument:'b'缺少一个未知的参数，demo01必须传2个参数
　　#demo01(1,2,3)#TypeError demo01()takes 2 positional arguments but 3 were given,demo01函数有2个位置参数，但是接收到了3个；
　　#必传参数:调用函数时必须传入的参数，函数定义时只定义参数名
　　#传入的参数个数必须与形参的数量一致
　　demo01(1,2)#yes
　　demo01(1,[1,2])#yes
　　demo01([2,3],(1,2))#yes
　　demo01(1,{2,3,4})#yes
　　demo01(2,{"code":'1001',"name":"zhang","age":18})#yes
```

![0.png](https://ucloud-blog.cn-bj.ufileos.com/articles/127804/images/127804_000.png)

**3、关键字参数**

　　以参数名和参数值的关联在一起的方式进行传参，键值对的模式，参数名为键。

```
　　#coding:utf-8
　　#Author:YangXiaoPeng
　　def demo01(a,b):
　　print(a,type(a),end="__")
　　print(b,type(b))
　　#第一个关键字出入的参数位置之前的参数比逊选择关键字传参；如下面的示例中，第一个关键字传参的变量是a，a在函数定义的第二个位置,那么第二个位置之前的参数都必须以关键字传参的形式传参。
　　#demo01(1,a=2)#demo01()got multiple values for argument'a'
　　demo01(a=1,b=2)#yes
　　demo01(1,b=2)#yes
　　demo01(b=1,a=2)#yes
　　demo01(b=1,a=[1,2])#yes
　　demo01(b=[2,3],a=(1,2))#yes
　　demo01(b=1,a={2,3,4})#yes
　　demo01(b=2,a={"code":'1001',"name":"zhang","age":18})#yes
```

![1.png](https://ucloud-blog.cn-bj.ufileos.com/articles/127804/images/127804_001.png)

**4、默认参数**

　　调用函数时不传入参数an默认值处理，传入时按传入的参数值处理

```
　　#coding:utf-8
　　#Author:YangXiaoPeng
　　##默认参数
　　def demo02(City="LongNan"):
　　print("City是默认参数，默认值是：中国,当前值是：",City)
　　#不传入参数
　　demo02()
　　#传入参数
　　demo02("Beijing")
```

![2.png](https://ucloud-blog.cn-bj.ufileos.com/articles/127804/images/127804_002.png)

**5、不定长参数**

　　传入的参数会生成一个元组类型的变量供函数内部使用

```
　#coding:utf-8
　　#Author:YangXiaoPeng
　　##不定长参数
　　def demo03(*args):
　　print(args,type(args))
　　#传入的参数会生成一个元组类型的变量供函数内部使用
　　demo03(1)
　　demo03("code")
　　demo03(1,"code")
```

![3.png](https://ucloud-blog.cn-bj.ufileos.com/articles/127804/images/127804_003.png)

　　传入的参数不能少于必传参数的个数

　　\*args后面的形参，必须以关键字参数进行传参

```
　　#coding:utf-8
　　#Author:YangXiaoPeng
　　#*args后面的形参，必须以关键字参数进行传参,
　　def demo04(a,b,*args,c):
　　print("a传入的参数值是：{},b传入的参数值是：{},args传入的参数是：{},c出入的参数是:{}".format(a,b,args,c))
　　#传入的参数不能少于必传参数的个数,a,b,c三个为必传参数
　　#demo04(1,2)#TypeError
　　#demo04(1,2,3)#TypeError
　　demo04(1,2,c=3)
```

![4.png](https://ucloud-blog.cn-bj.ufileos.com/articles/127804/images/127804_004.png)

　　\*args之前的参数只能按位置传参,不可以关键字传参

　　传入的参数个数比必传参数多时,首先给必传参数按位置赋值，然后将剩余的参数生成一个元组传递给args

　　\*\*修饰的参数必须以关键字的参数方式传参,Python解释器会将传入的关键字和关键字的值生成一个字典供函数内部使用

```
　　#coding:utf-8
　　#Author:YangXiaoPeng
　　def demo05(**kwargs):
　　print("kwargs传入的参数是：{}".format(kwargs),type(kwargs))
　　kwargs={"code":'1002',"name":"zhang"}
　　#demo05(kwargs)#TypeError
　　#**修饰的参数必须以关键字的参数方式传参,Python解释器会将传入的关键字和关键字的值生成一个字典供函数内部使用
　　demo05(**kwargs)#kwargs传入的参数是：{'code':'1002','name':'zhang'}&lt;class'dict'&gt;
　　demo05(code='1002',name="zhang")#kwargs传入的参数是：{'code':'1002','name':'zhang'}&lt;class'dict'&gt;
```

![5.png](https://ucloud-blog.cn-bj.ufileos.com/articles/127804/images/127804_005.png)

    　\*\*修饰的参数必须是最后一个

```
　　#coding:utf-8
　　#Author:YangXiaoPeng
　　#**修饰的参数必须是最后一个
　　"""
　　#SyntaxError:invalid syntax
　　def demo06(a,b,*args,c,**kwargs,d):
　　pass
　　"""
　　def demo06(a,b,*args,c,**kwargs):
　　print("a传入的参数值是:{},b传入的参数值是:{},args传入的参数是:{}".format(a,b,args),end='')
　　print(",c传入的参数是:{},kwargs传入的参数是:{}".format(c,kwargs))
　　demo06(1,2,3,4,5,c=3,code='1002',name="zhang",d=3)
```

　　综上所述，关于Python中函数参数类型的解答，就为大家介绍到这里了，希望可以给各位读者带来帮助。