网站上做旅游卖家要学什么条件,深圳附近做个商城网站哪家公司便宜点,东道设计公司,项目建设表态发言最近在带着新成员一起学习《Python基础教程》这本书,看到参数魔法的时候突然感觉好多术语真的不知道呀~Python参数#xff1a;位置参数#xff0c;关键字参数经常看Python我们肯定经常看见,下面类似这样的代码def add(x,y):return xy# 1add(1,2)# 2add(x1,y2)上面的两段代码结…最近在带着新成员一起学习《Python基础教程》这本书,看到参数魔法的时候突然感觉好多术语真的不知道呀~Python参数位置参数关键字参数经常看Python我们肯定经常看见,下面类似这样的代码def add(x,y):return xy# 1add(1,2)# 2add(x1,y2)上面的两段代码结果是一样但是含义却不一样第一种叫做位置参数即add函数根据调用时参数传进来时候的位置来确定谁是x,谁是y第二种叫做关键字参数即add函数根据调用时指定的参数对应值来确定x,y;这时也可以写成add(y2,x1)两种方法各有自己的用途Python收集参数我们都应该知道在Python3(2不支持)在解压可迭代对象是有星号表达式进行多个元素的不确定解包然后收集参数是什么呢如名字所示就是当参数个数不定时我们函数的定义类似收集的方式满足不定长参数需求这里就也用到了星号*不过星号表达式在解压可迭代对象时生成的是个列表收集参数则要看星号的数量来决定类型下段代码运行所示_, *b, _ [hello, world, test, ddd]print(b)def test(*parameter1, **parameter2):print(parameter1, parameter1)print(parameter2, parameter2)test(hello, world, foa, ssb)如图片所示收集参数中使用一个星号即“*”会对调用时导入的位置参数进行‘收集’转为元祖收集参数中使用两个星号即“**”会对调用时导入的关键字参数进行“收集”转换为字典此时你可能已经联想到了经常遇到的 args,*kwargs,后面会提到“收集参数“反转上面提到了收集参数针对函数定义在参数位置利用*来进行不定参数的收集同时我们也可以利用类似的‘逆运算’进行代码编写如下面代码test1 (hello, world)def test(parameter1, parameter2):print(1., parameter1,)print(2., parameter2)test(*test1)args,*kwargs如上面收集参数所示在Python中只是习惯默认定义args为位置参数收集参数*kwargs为关键字参数收集参数他们之间的区别也如上所示我们什么时候会用到他们呢子类化class Foo(object):def __init__(self, value1, value2):# do something with the valuesprint value1, value2class MyFoo(Foo):def __init__(self, *args, **kwargs):# do something else, dont care about the argsprint myfoosuper(MyFoo, self).__init__(*args, **kwargs)装饰器def mydecorator( f ):functools.wraps( f )def wrapper( *args, **kwargs ):print Calling f, args, kwargsv f( *args, **kwargs )print f returned, vreturn vreturn wrapperPS:注意收集参数顺序位置参数必须在关键字参数之前也就是说args和**kwargs同时出现时args必须位于前面