今天给大家分享一下我编译的一段Python参数的内容。内容很干。全文以案例的形式理解知识点。大家一定要明白,如果你是python新手,相信这篇文章应该对你有很大的帮助。接下来是文字。1、参数分类函数,在定义的时候,可以带参数也可以不带参数。从函数定义的角度来看,参数可以分为两种类型:强制参数:调用函数时必须指定的参数,定义中没有等号调用函数如果不指定,则使用默认参数值。比如下面的代码中,a和b是必选参数,c和d是可选参数deffunc(a,b,c=0,d=1):pass从函数调用的角度来看,可以分参数into两种:关键字参数:调用时,使用key=value的形式传递参数,这样可以不按定义的顺序传递参数。位置参数:调用时,不要使用关键字参数的key-value形式传递参数。这样在函数定义的时候就应该按照参数的先后顺序传递参数。deffunc(a,b,c=0,d=1):pass#关键字参数传递方式func(a=10,c=30,b=20,d=40)#位置参数传递方式func(10,20,30,40)最后,还有一种非常特殊的参数,称为可变参数。意思是参数的个数是可变的,可以是0,也可以是任意数,但传递参数时不能指定参数名。通常用*args和**kw来表示:*args:接收到的所有参数都是按位置传入的参数是元组类型**kw:接收到的参数都是以关键字参数传入的,都是字典类型deffunc(*args,**kw):print(args)print(kw)func(10,20,c=20,d=40)输出结果如下(10,20){'c':20,'d':40}2.十一种情况情况一:在下面的函数中,必须指定a可选参数>>>defdemo_func(a):...print(a)...>>>demo_func(10)10>>>demo_func()#如果没有指定,会报错Traceback(mostrecentcalllast):File"",line1,inTypeError:demo_func()missing1requiredpositionalargument:'a'情况2:在下面的函数中,b是一个可选参数(默认参数),可以指定也可以不指定,不指定则默认为10>>>defdemo_func(b=10):...print(b)...>>>demo_func(20)20>>>demo_func()10情况三:在下面的函数中,name和age都是必填参数埃特斯。调用指定参数时,如果不使用关键字参数传递参数,需要注意顺序>>>defprint_profile(name,age):...returnf"我叫{name},我今年{age}岁"...>>>print_profile("iswbm",27)'我叫iswbm,我今年27岁'如果参数太多,又不想太在意顺序,可以使用关键字参数来传递参数,指定参数统计的时候附上参数名,例如:>>>print_profile(age=27,name="iswbm")'我叫iswbm,我今年27岁'案例四:在下面的函数中,args参数和上面一样参数名不同,前面有一个*,说明是可变参数,可以接收任意数量的参数,不需要指定参数名>>>defdemo_func(*args):...print(args)...>>>>>>demo_func(10,20,30)(10,20,30)情况5:在下面的函数中,kw参数之间多了一个*而上面的*args,一共有两个**,也就是说kw是可变关键字参数,可以接收任意数量的带参数名的参数。>>>defdemo_func(**kw):...print(kw)...>>>demo_func(a=10,b=20,c=30){'a':10,'b':20,'c':30}情况六:定义时,必选参数必须在可选参数前面,否则运行时会报错>>>defdemo_func(a=1,b):...print(a,b)...文件“”,第1行语法错误:非默认参数遵循默认参数>>>>>>defdemo_func(a,b=1):...print(a,b)...>>>案例七:定义时,可变位置参数必须在可变关键字参数之前,否则运行时会报错>>>defdemo_func(**kw,*args):File"",line1defdemo_func(**kw,*args):^SyntaxError:invalidsyntax>>>>>>defdemo_func(*args,**kw):...print(args,kw)...>>>案例8:可变位置参数可以放在需要的参数前面,但是调用的时候,需要的参数必须指定传入的参数名,否则会报错>>>defdemo_func(*args,b):。..print(args)...print(b)...>>>demo_func(1,2,100)Traceback(最后一次调用):文件“”,第1行,在TypeError中:演示函数()missing1requiredkeyword-onlyargument:'b'>>>>>>demo_func(1,2,b=100)(1,2)100情况9:变量关键字参数不同,变量关键字参数必须放在结束。下面三个例子,无论关键字参数后面是位置参数、默认参数还是变量参数,都会报错>>>defdemo_func(**kw,a):文件“”,第1行defdemo_func(**kw,a):^SyntaxError:invalidsyntax>>>>>>defdemo_func(**kw,a=1):文件"",第1行defdemo_func(**kw,a=1):^SyntaxError:语法无效>>>>>>defdemo_func(**kw,*args):文件"",line1defdemo_func(**kw,*args):^SyntaxError:invalidsyntaxCase10:结合以上知识点,四种参数类型可以出现在一个函数中,但是一定要注意顺序defdemo_func(arg1,arg2=10,*args,**kw):print("arg1:",arg1)print("arg2:",arg2)print("args:",args)print("kw:",kw)尝试调用这个函数,输出如下:>>>demo_func(1,12,100,200,d=1000,e=2000)arg1:1arg2:12args:(100,200)kw:{'d':1000,'e':2000}案例11:使用单个*,后面传位置参数的时候,对传参的方式有严格的要求,传参的时候一定要使用关键字参数来传参数同理,必须写参数名称,否则会报错。>>>defdemo_func(a,b,*,c):...打印(a)...打印(b)...打印(c)...>>>>>>demo_func(1,2,3)Traceback(最近一次调用最后一次):文件“”,第1行,在TypeError中:demo_func()接受2个位置参数,但给出了3个>>>>>>demo_func(1,2,c=3)1233.pit函数传参的参数是实际对象的内存地址。如果参数是引用类型的数据类型(列表、字典等),在函数内部修改后,即使修改后的值没有返回回来,实际上外面的值已经改变了。>>>defadd_item(item,source_list):...source_list.append(item)...>>>alist=[0,1]>>>add_item(2,alist)>>>alist[0,1],2]以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发“J”还能收到大量学习资料,内容涵盖Python电子书、教程、数据库编程、Django、爬虫、云计算等。或者去编程学习网了解更多编程技术知识。