«Это» - все о сфере видимости. Каждая функция имеет свою собственную область действия, и поскольку все в JS является объектом, даже функция может хранить некоторые значения в себе, используя «это». ООП 101 учит, что «это» применимо только к экземплярам объекта. Поэтому каждый раз, когда выполняет функция, новый «экземпляр» этой функции имеет новое значение «this».
Большинство людей путаются, когда пытаются использовать «это» внутри анонимных функций закрытия например:
(function(value) { this.value = value; $('.some-elements').each(function(elt){ elt.innerHTML = this.value; // uh oh!! possibly undefined }); })(2);
Итак, внутри each (), «this» не содержит «значение», которое вы ожидаете от него (от
this.value = value;над ним). Итак, чтобы справиться с этой проблемой (без каламбуры), разработчик мог:
(function(value) { var self = this; // small change self.value = value; $('.some-elements').each(function(elt){ elt.innerHTML = self.value; // phew!! == 2 }); })(2);
попробовать; вам понравится эта схема программирования
Модуль time
сообщит вам текущую дату, используя time.time()
.
Это в секундах. Чтобы добавить 30 дней, вы добавляете 30 дней на секунды.
>>> import time
>>> current_date = time.time()
>>> time.ctime(current_date)
'Mon Mar 04 11:45:20 2019'
>>> plus30days = current_date + 30 * 24 * 60 * 60
>>> time.ctime(plus30days)
'Wed Apr 03 12:45:20 2019'
Существует разница в часах, потому что в моем часовом поясе часы идут вперед в течение следующих 30 дней.