Предупреждение об устаревании Django или ошибка ImproperlyConfigured - передача 3-х кортежей в django.conf.urls.include () не поддерживается

Если вам нравится концепция создания экземпляра класса в объектно-ориентированном смысле (т. е. для создания объекта этого класса), то вы близки к пониманию закрытий.

Подумайте об этом так: когда вы создаете экземпляр двух объектов Person, вы знаете, что переменная-член класса «Имя» не делится между экземплярами; каждый объект имеет свою «копию». Аналогично, когда вы создаете замыкание, свободная переменная («calledCount» в вашем примере выше) привязана к «экземпляру» функции.

Я думаю, что ваш концептуальный скачок немного затруднен тем фактом, что каждая функция / замыкание, возвращаемая функцией warnUser (в стороне: это функция более высокого порядка ), связывает «calledCount» с тем же начальным значением (0), тогда как часто при создании замыканий более полезно передавать разные инициализаторы в функцию более высокого порядка, подобно передаче разных значений конструктору класса.

Итак, предположим, когда «calledCount» достигает определенного значения, которое вы хотите завершить сеанс пользователя; вам могут потребоваться разные значения для этого в зависимости от того, поступает ли запрос из локальной сети или большого плохого интернета (да, это надуманный пример). Чтобы достичь этого, вы могли передавать разные начальные значения для callCount в warnUser (т. Е. -3 или 0?).

. Часть проблемы с литературой - это номенклатура, используемая для их описания («лексический охват») , "свободные переменные"). Не позволяйте этому обмануть вас, затворы более просты, чем казалось ... prima facie; -)

37
задан Alasdair 21 January 2018 в 17:31
поделиться