Установить значение параметра по умолчанию в функции на значение другого параметра

Есть ли способ установить значение параметра по умолчанию в функции как еще один из параметров?

I.e.

def (input1, input2 = input1)

Я полагаю, что могу сделать что-то вроде того, что показано ниже, но хочу знать, есть ли лучший способ

def (input1, input2 = 'blank')
      If input2 == 'blank':
           input2 = input1

person Jgreen727    schedule 22.06.2021    source источник
comment
Нет, вы не можете, потому что при объявлении input2=input1, input1 должно быть уже определено   -  person bdbd    schedule 22.06.2021
comment
@bdbd Неправда. Иди протестируй.   -  person Peter Jones    schedule 22.06.2021
comment
@PeterJones Протестировано def test(x, y=x):. Там написано NameError: name 'x' is not defined, так что вы не можете   -  person bdbd    schedule 22.06.2021


Ответы (3)


Вы можете попробовать это. Возможно, небольшое уточнение могло бы помочь нам помочь вам больше.

def do_stuff(input1, input2 = None):
    if input2 is None:
       input2 = input1

Вы были довольно близко.

person Peter Jones    schedule 22.06.2021

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

Обычно мы используем None, чтобы поймать отсутствующее значение:

def add2(i1, i2=None):
    if i2 is None:
        i2 = i1
    return i1 + i2

В этой функции i1 будет обязательным. Если он не указан, i2 будет установлено то же значение, что и i1.

add2(10, 2)
# > 12
add2(9)
# > 18
person Whole Brain    schedule 22.06.2021

Я предпочитаю использовать создание класса в качестве параметра

class helper:
    input 2 = 'blank'
    input 3 = 1
def xx(input1, helper):
    if input1 == helper.input2:
        input1 == helper.input3

Это пример, вы можете использовать класс, чтобы помочь вам.

person Zichzheng    schedule 22.06.2021