- 1
- 2
- 3
- 4
try: # эталонный говнокод
height
except NameError:
height = -99999
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−17
try: # эталонный говнокод
height
except NameError:
height = -99999
динамические переменные это когда, например, под `if`ом переменной присваивается значение и таким образом переменная создается. в дальнейшем коде, если переменная была создана, то к ней можно обращатся. если переменная не была создана, то обращение к ней будет вызывать run-time ошибку.
я на питоне мало программировал что бы осознать эту тонкость.
как-то даже странно, что в перле есть объявление переменных - а в питоне нет.
типа:
почти во всех человеческих языках это будет синтаксической ошибкой, потому что `a = 1` существовало - и умерло - вместе с контекстом ветки `if`а.
в пхп только функциями и неймспейсами ограничена.
в питоне аналогично.
и в жабе. и в go. и в функциональных языках. и блин даже в перле. другими словами: подавляющее большинство языков.
> переменные
spoiler: variables, они же переменные
штоа????
как раз в анси си она ограничена функцией (для автоматических переменных)
и в JS тоже
а везде в других языках она ограничена блоком
Иди-ка почитай стандарт, гость. Даже в сишке 89 года можно объявлять переменные в начале блока.
>логика
Не ищи несуществующего.
Если внутри функции это имя (допустим 'a') не используется как локальная переменная - то есть нигде нет выражения 'a = ...', -- то при попытке прочесть её интерпретатор полезеть искать её наверх по скоупам, включая глобальный, а если не найдет, кинет NameError.
Если же такое выражение хоть где-то есть внутри функции, но не было вызвано до обращения, то интерпрератор никуда не полезет и сразу кинет UnboundLocalError.
https://ideone.com/daKQlt
Нет. Это поиск в хэш-табличке