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__'之下的代码块不被运行。
posted @ 2018-06-06 18:37  33-林俊凯  阅读(154)  评论(0)    收藏  举报