【问题】
Python中,希望实现一个可变参数的函数。
【解决过程】
1.参考:Python中函数的参数定义和可变参数 ,去试了试,是可以的,
相关代码如下:
(extractOK, extractedBlogUser, generatedBlogEntryUrl) = callCommonBlogFunc(extractBlogUser, inputUrl=inputUrl); #------------------------------------------------------------------------------ def callCommonBlogFunc(funcToCall, **paraDict): blogProvider = "BlogNetease"; paras = ""; for i, para in enumerate(paraDict): if ( i == 0) : paras += para + "=" + paraDict[para]; #print dir(para); #paras += para.__str__; else : paras += " ," + para + "=" + paraDict[para]; #paras += " ," + para.__name__; print dir(funcToCall); print "funcToCall.func_name=",funcToCall.func_name; #print funcToCall.__dict__; funcCallStr = blogProvider + "." + funcToCall.func_name + "(" + paras + ")"; print "funcCallStr=",funcCallStr; return;
【总结】
1. 可变参数是一个星号*的,那么传入的是List类型变量;
注意:调用者,必须用直接给参数,即"hello", 123等形式的调用。
2. 可变参数是两个星号**的,那么传入的是Dictionary类型变量;
注意:调用者,必须用b="hello", c=123的形式调用。
看下面代码,就很容易懂了:
def funcParaList(a, *paraList) : print "paraList=",paraList; # paraList= ('hello', 123) def funcParaDict(a, **paraDict) : print "paraDict=",paraDict; # paraDict= {'c': 123, 'b': 'hello'} def testFuncPara(): funcParaList('abc', "hello", 123); funcParaDict('abc', b="hello", c=123);
转载请注明:在路上 » 【已解决】Python中实现可变参数的函数