在python中具有任意数量的带有命名默认值的参数

时间:2011-08-01 17:37:36

标签: python function arguments

我想在python中编写一个函数,除了一个命名参数(默认值)之外,还可以使用任意数量的未命名参数。

例如,我想写这样的东西

def myFunc(*args, optDefault=1):

但这只是一个语法错误。是否有相同的方法来做到这一点?

3 个答案:

答案 0 :(得分:2)

怎么样?
def myFunc(*args, **kwargs):
    optDefault = kwargs.pop('optDefault', 1)
    assert kwargs == {}, "There may only be one keyword argument to myFunc"

不是最漂亮的,但它确实有效。

答案 1 :(得分:1)

怎么样:

def myFunc(optDefault=1, *args):

答案 2 :(得分:-2)

为什么不使用this, 一个例子(我借用here

import optparse

if __name__=="__main__":
    parser = optparse.OptionParser("usage: %prog [options] arg1 arg2")
    parser.add_option("-H", "--host", dest="hostname",
                      default="127.0.0.1", type="string",
                      help="specify hostname to run on")
    parser.add_option("-p", "--port", dest="portnum", default=80,
                      type="int", help="port number to run on")

    (options, args) = parser.parse_args()
    if len(args) != 2:
        parser.error("incorrect number of arguments")
    hostname = options.hostname
    portnum = options.portnum