- 1
- 2
- 3
- 4
- 5
- 6
- 7
a=[1,2,3,1,2,1,4]
for i in a:
if i is 1:
zzz=222
else:
print zzz
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−102
a=[1,2,3,1,2,1,4]
for i in a:
if i is 1:
zzz=222
else:
print zzz
http://ideone.com/nhqqRU
Сегодня весь день чинил странный баг, смысл которого сводится вот к такой синтетки.
Притом если условие не выполниться на первой итерации http://ideone.com/G3Uf7V , то будет эксепшен.
if 1 in a then: print 222
А вы хотели Notice, как в PHP?
is тут не к месту, впрочем.
Если список пустой, вылетало с UnboundLocalError. Для привыкшего к языкам с обьявлением переменных непривычно, и главное - проявляется в рантайме при нужном расположении звезд.
или как еще пхпшники любят делать
даже иритичиская жаба отказывается компилить такую байду.
Даже с final'ом компилит: https://ideone.com/PbEcaC
А это просто следствие того, что переменные не нужно объявлять - без объявления не получится сделать нормальные скопы.
2) При объявлении переменных можно получить ворнинги про "uninitialized variable", что иногда полезно.
А так - конечно, можно писать и без этого, но как-то неприятно.
код из серии "Счастливой отладки суки".
if(чавойта())
$оно=питушня();
хуита($оно);
Нотис же будет, если чавойта() не выполнится не?
Даже в Node.js при 'use strict' уже будет эксепшен.
>Разумеется будет эксепшен.
И этозамечательно! Лучше ловить эксепшены, чем чинить баги.
>Весь день??
Так я на отходосах был.
как сказал один мой коллега,
Эксепшн будет только, если не писать "var" (но какой JS без var?), а аналог питонокода, представленный мной выше, успешно отработает, и это норма.