scpope & amp; закрытие & amp; hiisting (var / function)
blockquote>
- scpope: глобальный var может быть доступен в любом месте (весь объем файла), локальный var может быть доступен только локальной областью (функция / область блока)! Примечание: если локальная переменная не использует переменные var в функции, она станет глобальной переменной!
- close: функция внутренняя, другая функция, которая может обращаться к локальной области (родительская функция) & amp; глобальный охват, howerver, к которым его нельзя открыть другим! если вы не вернете его в качестве возвращаемого значения!
- hoisting: переместите все объявить / ундекларировать vars / function в область верхнего уровня, чем присвоить значение или null! Примечание: он просто перемещает объявление, а не перемещает значение!
var a = 1; //"a" is global scope function b() { var a = function () {}; //"a" is local scope var x = 12; //"x" is local scope a = 10; //global variable "a" was overwrited by the local variable "a" console.log("local a =" + a); return console.log("local x = " + x); } b(); // local a =10 // local x = 12 console.log("global a = " + a); // global a = 1 console.log("can't access local x = \n"); // can't access local x = console.log(x); // ReferenceError: x is not defined
Нет. Фильтры Django работают на уровне базы данных, генерируя SQL. Для фильтрации на основе свойств Python вы должны загрузить объект в Python для оценки свойства - и к этому моменту вы уже выполнили всю работу по его загрузке.
Возможно, я неправильно понял ваш исходный вопрос, но в python встроен фильтр .
filtered = filter(myproperty, MyModel.objects)
Но лучше использовать понимание списка :
filtered = [x for x in MyModel.objects if x.myproperty()]
или даже лучше, выражение генератора :
filtered = (x for x in MyModel.objects if x.myproperty())