【问题】
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中实现可变参数的函数