2016-01-27 6 views
0

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

Я попытался это, но он не работает (имя «B» не определено):

def foo(A, B=A): 
    do_something() 

Я понимаю, что значения аргументов не назначены перед телом функции.

ответ

2

Вы должны сделать это внутри своей функции.

Принимая оригинальную функцию:

def foo(A, B=A): 
    do_something() 

попробовать что-то вроде:

def foo(A, B=None): 
    if B is None: 
     B = A 
    do_something() 

Важна вещь, что значения функции по умолчанию для аргументов функций приведены в то время, определяются функция.

Когда вы вызываете функцию с некоторым значением для A, уже слишком поздно, поскольку значение по умолчанию B уже назначено и живет в определении функции.

1

Вы можете сделать это вот так. Если B имеет значение None, то назначьте его с A

def foo(A, B=None): 
    if B is None: 
     B = A 

    print 'A = %r' % A 
    print 'B = %r' % B