Лямбда-функции в python обходят ссылку на объект - PullRequest
0 голосов
/ 29 мая 2020

Я понимаю, как это работает, но как мне это сделать python вывести true и false в этом случае?)

def f(func, value):
        global a
        a = 2
        print(func(value))

a = 3
f(lambda x: x == a, 3)
f(lambda x: x == a, 2)

1 Ответ

0 голосов
/ 29 мая 2020

Если ваша цель - заставить код проверять значение a, которое вы изначально объявили (т.е. 3), чтобы он печатал True; False вместо обратного, просто не устанавливайте a на 2 внутри вашей функции:

def f(func, value):
        print(func(value))

a = 3
f(lambda x: x == a, 3)
f(lambda x: x == a, 2)

Использование global обычно не рекомендуется, потому что это позволяет очень легко ввести себя в заблуждение, если значения изменяются неожиданным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...