Python используется для разрешения распаковки итерируемых аргументов в сигнатурах функций, что, по-видимому, является тем, что вам нужно для вашей lambda
функции. Эта функция была удалена в Python 3 по причинам, изложенным в PEP 3113 .
Основная причина, по которой он был удален, состоит в том, что он немного портит интроспекцию, так как нет хорошего способа назвать составной параметр, который был распакован. Если вы берете обычный параметр (в обычной функции, а не в однострочном лямбда-выражении), вы можете достичь тех же результатов, распаковывая их вручную в отдельной строке (не путая исходное имя параметра):
# def foo(a, (b, c), d): # this used to be a legal function definition
def foo(a, bc, d): # but now you must leave the two-valued argument packed up
b, c = bc # and explicitly unpack it yourself instead
...
Что-то еще, что может делать то, что вы хотите, - это распаковка значений, когда вы вызываете функцию. В вашем примере вы можете вызвать print(*vals)
, а *
говорит Python распаковать итерируемый vals
в качестве отдельных аргументов print
. Если vals
всегда имеет ровно два значения, оно будет точно таким же, как ваш текущий код.