Python中函数的参数类型实例分析
导读:本文共3480.5字符,通常情况下阅读需要12分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 1、Python的函数参数的类型必传参数:调用函数时必须传入的参数,函数定义时只定义参数名关键字参数:传入时以函数的参数名值对的方式传入默认参数:函数定义时为参数默认设置一个值,调用时不传输参数即以默认值处理不定长参数:以*修饰或者**修饰的参数;*修饰的参数是一个元组(tuple),**修饰的参数必须是字典(dict),通常写作*args或者**args2、P... ...
目录
(为您整理了一些要点),点击可以直达。1、Python的函数参数的类型
必传参数:调用函数时必须传入的参数,函数定义时只定义参数名
关键字参数:传入时以函数的参数名值对的方式传入
默认参数:函数定义时为参数默认设置一个值,调用时不传输参数即以默认值处理
不定长参数:以*修饰或者**修饰的参数;*修饰的参数是一个元组(tuple),**修饰的参数必须是字典(dict),通常写作*args或者**args
2、Python的必传参数
传入的参数个数必须与形参的数量一致
#coding:utf-8#Author:YangXiaoPengdefdemo01(a,b):print(a,type(a))print(b,type(b))#demo01(1)#TypeErrormissing1requiredpositionalargument:'b'缺少一个未知的参数,demo01必须传2个参数#demo01(1,2,3)#TypeErrordemo01()takes2positionalargumentsbut3weregiven,demo01函数有2个位置参数,但是接收到了3个;#必传参数:调用函数时必须传入的参数,函数定义时只定义参数名#传入的参数个数必须与形参的数量一致demo01(1,2)#yesdemo01(1,[1,2])#yesdemo01([2,3],(1,2))#yesdemo01(1,{2,3,4})#yesdemo01(2,{"code":'1001',"name":"zhang","age":18})#yes
3、关键字参数
以参数名和参数值的关联在一起的方式进行传参,键值对的模式,参数名为键。
#coding:utf-8#Author:YangXiaoPengdefdemo01(a,b):print(a,type(a),end="__")print(b,type(b))#第一个关键字出入的参数位置之前的参数比逊选择关键字传参;如下面的示例中,第一个关键字传参的变量是a,a在函数定义的第二个位置,那么第二个位置之前的参数都必须以关键字传参的形式传参。#demo01(1,a=2)#demo01()gotmultiplevaluesforargument'a'demo01(a=1,b=2)#yesdemo01(1,b=2)#yesdemo01(b=1,a=2)#yesdemo01(b=1,a=[1,2])#yesdemo01(b=[2,3],a=(1,2))#yesdemo01(b=1,a={2,3,4})#yesdemo01(b=2,a={"code":'1001',"name":"zhang","age":18})#yes
4、默认参数
调用函数时不传入参数an默认值处理,传入时按传入的参数值处理
#coding:utf-8#Author:YangXiaoPeng##默认参数defdemo02(City="LongNan"):print("City是默认参数,默认值是:中国,当前值是:",City)#不传入参数demo02()#传入参数demo02("Beijing")
5、不定长参数
传入的参数会生成一个元组类型的变量供函数内部使用
#coding:utf-8#Author:YangXiaoPeng##不定长参数defdemo03(*args):print(args,type(args))#传入的参数会生成一个元组类型的变量供函数内部使用demo03(1)demo03("code")demo03(1,"code")
传入的参数不能少于必传参数的个数
*args 后面的形参,必须以关键字参数进行传参
#coding:utf-8#Author:YangXiaoPeng#*args后面的形参,必须以关键字参数进行传参,defdemo04(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)#TypeErrordemo04(1,2,c=3)
*args 之前的参数只能按位置传参,不可以关键字传参
传入的参数个数比必传参数多时,首先给必传参数按位置赋值,然后将剩余的参数生成一个元组传递给args
**修饰的参数必须以关键字的参数方式传参,Python解释器会将传入的关键字和关键字的值生成一个字典供函数内部使用
#coding:utf-8#Author:YangXiaoPengdefdemo05(**kwargs):print("kwargs传入的参数是:{}".format(kwargs),type(kwargs))kwargs={"code":'1002',"name":"zhang"}#demo05(kwargs)#TypeError#**修饰的参数必须以关键字的参数方式传参,Python解释器会将传入的关键字和关键字的值生成一个字典供函数内部使用demo05(**kwargs)#kwargs传入的参数是:{'code':'1002','name':'zhang'}<class'dict'>demo05(code='1002',name="zhang")#kwargs传入的参数是:{'code':'1002','name':'zhang'}<class'dict'>
**修饰的参数必须是最后一个
#coding:utf-8#Author:YangXiaoPeng#**修饰的参数必须是最后一个"""#SyntaxError:invalidsyntaxdefdemo06(a,b,*args,c,**kwargs,d):pass"""defdemo06(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)
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
Python中函数的参数类型实例分析的详细内容,希望对您有所帮助,信息来源于网络。