python函数的可变参数有哪几种,各有什么特点,如何定义带有可变数量参数的函数Python
许多编程语言允许定义可变数量的参数,因此在调用函数时可以传递任意数量的参数。Python也不例外。Python允许在参数前添加星号(*),这意味着该参数可以接收多个参数值,这些值作为元组传入。
以下程序定义了一个参数数量可变的函数:
#定义支持参数集合的函数
deftest(a,*书籍):
印刷品(书籍)
#书籍被视为元组。
forbinbooks:
打印(b)
#输出整型变量a的值。
打印(一份)
#调用test()函数
测试(5, php中文网, Python教程)运行上面的程序,会看到下面的运行结果:
(“php中文网”,“Python教程”)
Php中文网
Python教程
5从上面的运行结果可以看出,调用test()函数时,books参数可以传入多个字符串作为参数值。从test()的函数体代码来看,参数集合的本质是一个元组:Python会将传递给books参数的多个值集合成一个元组。Python允许参数列表中任意位置有可变数量的参数(不要要求参数列表中的最后一个参数),但是Python要求一个函数最多只能带一个支持“普通”参数集合的参数。例如,下面的程序:
#定义支持参数集合的函数
deftest(*books,num):
印刷品(书籍)
#书籍被视为元组。
forbinbooks:
打印(b)
打印(数字)
#调用test()函数
Test(php中文网, Python教程,num=20)从上面的程序可以看出,Test()函数的第一个参数是可变个数的形参。由于这个参数可以接收不同的参数值,如果需要将参数值传递给后面的参数,必须使用关键字参数,否则程序会将所有传递的值视为传递给books参数。
Python还可以收集关键字参数,Python会将这些参数收集到一个字典中。为了让Python收集关键字参数,需要在参数前面添加两个星号。在这种情况下,一个函数可以同时包含一个支持“普通”参数集合的参数和一个支持关键字参数集合的参数。例如,下面的代码:
#定义支持参数集合的函数
deftest(x,y,z=3,*书籍,* *分数):
打印(x,y,z)
印刷品(书籍)
打印(分数)
Test(1,2,3, php中文网, Python教程,语言=89,数学=94)上面的程序调用Test()函数时,第一个1,2,3会传递给常用参数X,Y,Z;接下来的两个字符串将被books参数收集到元组中;最后两个关键字参数将被收集到一个字典中。运行上面的代码,您将看到以下输出结果:
123
(“php中文网”,“Python教程”)
{ 中文 336089,数学 336094}对于上述方式定义的test()函数,参数z的默认值几乎不起作用。例如,按如下方式调用test()函数:
Test(1,2, php中文网, Python教程,language=89,math=94)如果想让z参数的默认值起作用,只需要传入两个position参数。例如,下面的调用代码:
测试(1,2,语文=89,数学=94)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。