Какая польза от () в коде Python? - PullRequest
0 голосов
/ 13 июля 2020
for x in range(10):
   arr.append(lambda:x**2)
arr[4]()

Ожидаемый результат: 16 или ничего, потому что нет оператора печати Но вывод, когда я запускаю, равен 81. Почему так?

Ответы [ 3 ]

4 голосов
/ 13 июля 2020

В вашем коде arr.append(lambda:x**2), x находится за пределами функции.

Когда вы завершаете sh, l oop, x устанавливается на 9 (от 0 до 9) .

Тогда x**2 равно 81, поэтому arr[4]() будет переоценивать x, поэтому результат будет 81.

Просто для удовольствия, вы можете попробовать то, что хотите, с следующее:

f_generator = lambda i: lambda: i**2
arr = [f_generator(i) for i in range(10)]
arr[4]()  # 16
0 голосов
/ 13 июля 2020

() используется для вызова любого объекта, это может быть метод или класс, например

class Name:
    ...

Name()

или

name = Name()
0 голосов
/ 13 июля 2020

Чтобы получить желаемый эффект, вам следует удалить лямбда следующим образом:

arr = []
for x in range(10):
   arr.append(x**2)
print(arr[4])

, потому что в противном случае вы сохраняете функцию, а не число. Обратите внимание, что теперь вам не нужно ()

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