Уведомления

Группа в Telegram: @pythonsu

#1 Май 22, 2015 15:12:07

Master Niga
От:
Зарегистрирован: 2007-01-22
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

У python и javascript что-то общее есть (не очевидные нюансы python после с++)?

Изучаю js. Где-то встретил упоминание, что python похож на js в чем-то, не помню в чём. Может, в “поднятии”, может в scope и лексическом окружении - не помню. Но после с++ момент с тем же scope в js был совсем не очевиден -я накололся, когда в цикле вызвал функцию:

var myAlerts= [];
for(var i = 0: i < 5; i++)
     myAlerts.push( function inner() { alert(i); } )
myAlerts[0](); //5
myAlerts[1](); //5
myAlerts[2](); //5
myAlerts[3](); //5
myAlerts[4](); //5
и получил это, вместо 0,1,2,3,4.

Какие у пайтона есть подобные неожиданности?



Офлайн

#2 Май 22, 2015 15:37:52

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

У python и javascript что-то общее есть (не очевидные нюансы python после с++)?

Master Niga
такое можно получить если сделать

>>> res = []
>>> for i in range(4):
...     res.append(lambda: i**2)
>>> res[0]()
9
>>> res[1]()
9
Если хочется вычислять потом, то нам помогут именованые аргументы
>>> for i in range(4):
...     res.append(lambda x=i: x**2)
...     
>>> res[0]()
0
>>> res[1]()
1

Отредактировано sander (Май 22, 2015 15:38:34)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version