Python10000小时计划——Python中的 *arg, **kw
Python中的*和**
在函数中接收元组和列表 当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,
它分别使用*和**前缀。这种 方法在函数需要获取可变数量的参数的时候特别有用。
实例(1)
#Python中的*和** def paranum(num,*args): total=0 for i in args: total+=pow(i,num) #功能:计算i的num次幂。 return total #print('paranum(2,3,4)=',paranum(2,3,4),'\n','paranum(2,10)=',paranum(2,10)) print('paranum(2,3,4)=%d \n paranum(2,10)=%d' %(paranum(2,3,4),paranum(2,10)))

由于在args变量前有*前缀,所有多余的函数参数都会作为一个元组存储在args中。
如果使用的是 **前缀,多余的参数则会被认为是一个字典的键/值对。
实例(2)
def func(p,**kw): print ('parameter p =',p) print ('parameter kw =',kw) func(1,a=2,c=3,b=4,d=5)
测试结果 成功。 
def func(p,**kw): print ('parameter p =',p) print ('parameter kw =',kw) func(1,2,a=2,c=3,b=4,d=5)
测试结果 报错。
实例(3)
def parameters(arg,*args,**kw): print('arg=',arg,'\n args=',args,'\n kw=',kw) if __name__=='__main__': #新知识点 parameters(2,3,4,5,a=6,c=7,b=8,d=9)
测试结果
●if __name__=='__main__':if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;
当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。

浙公网安备 33010602011771号