Наличие произвольного числа аргументов с именованным значением по умолчанию в python - PullRequest
3 голосов
/ 01 августа 2011

Я хочу написать в Python функцию, которая может принимать произвольное количество неназванных аргументов в дополнение к одному именованному аргументу (со значением по умолчанию).

Например, я хочу написать что-то вроде этого

def myFunc(*args, optDefault=1):

Но это просто дает синтаксическую ошибку.Есть ли эквивалентный способ сделать это?

Ответы [ 3 ]

2 голосов
/ 01 августа 2011

А как же

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

Не самая красивая, но работает.

1 голос
/ 01 августа 2011

А как же:

def myFunc(optDefault=1, *args):
0 голосов
/ 01 августа 2011

почему вы не используете этот , пример (я заимствую у здесь )

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
...