最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】Python中实现可变参数的函数

Python crifan 3261浏览 0评论

【问题】

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

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
84 queries in 0.183 seconds, using 22.09MB memory