Пожалуйста, помогите мне разобраться, как это работает. Выход 4if и else in python lambda expression
a=4
b=7
x=lambda: a if 1 else b
lambda x: 'big' if x > 100 else 'small'
print(x())
Пожалуйста, помогите мне разобраться, как это работает. Выход 4if и else in python lambda expression
a=4
b=7
x=lambda: a if 1 else b
lambda x: 'big' if x > 100 else 'small'
print(x())
Ваш x
всегда равен 4, так как она не принимает никаких аргументов и if 1
всегда True
. Тогда у вас есть выражение лямбда, которое не привязано ни к какой переменной, ни в другом месте. Возможно, вы распечатаете x
, который всегда 4
, как я сказал выше.
P.S. Я настоятельно рекомендую вам прочитать Using lambda Functions от Dive into Python
Позвольте мне перевести это для вас.
Вы назначаете x
a lambda
функцию без аргументов. Поскольку 1 всегда оценивается как true
, вы всегда возвращаете внешне определенную переменную a
, которая оценивается как 4. Затем вы создаете лямбда-функцию с одним аргументом x
, который вы не присваиваете переменной/имени доступа, поэтому Потеряно навсегда. Затем вы вызываете функцию x
, которая всегда возвращает a
. Выход 4.
Во-первых, давайте уберем эту строку, как это не делает ничего:
lambda x: 'big' if x > 100 else 'small'
Это lambda
выражение определено, но никогда не называли. Тот факт, что его аргумент также называется x
, не имеет ничего общего с остальной частью кода.
Давайте посмотрим на то, что осталось:
a = 4
b = 7
x = lambda: a if 1 else b
print(x())
Здесь x
становится функцией, поскольку она содержит код. lambda
форма может содержать только выражение, а не заявление, поэтому он должен использовать выражение форму if
которая ретроспективный:
истинный результат, если условие еще ложного результат
В этом случае условие равно 1
, что всегда верно, поэтому результатом функции x()
всегда является значение a
, присвоенное 4 ранее в коде. Эффективно, x()
действует как:
def x():
return a
Понимание различий между выражениями и заявления является ключом к пониманию кода, как это.
в чем вопрос? это о том, если - иначе или о выражении лямбда? –
Вы должны прочитать о лямбда-функции. – GAVD