1.Что такое PHP-эквивалент yield?
В PHP нет эквивалента yield
.yield
используется в функциях генератора - особый класс функций, который возвращает результат, но сохраняет его состояние.
Например:
def simple_generator(start=0, end=100):
while start < end:
start += 1
yield start
gen = simple_generator()
gen() # 1
gen() # 2
gen() # 3
Вы можете сделатьчто-то похожее в PHP примерно так:
class simple_generator {
private $start;
private $end;
function __construct($start=0, $end=100) {
$this->start = $start;
$this->end = $end;
}
function __call() {
if($this->start < $this->end) {
$this->start++;
return $start;
}
}
}
gen = simple_generator();
gen(); // 1
gen(); // 2
2.Что такое xrange?
xrange
ведет себя так же, как range
, но использует функцию генератора.Это настройка производительности для работы с очень большими списками или при нехватке памяти.
3.Что делает assert?Это эквивалент броска и исключения?
Да.Осторожно - это не то же самое, что PHP assert
- это действительно забавный вектор для атак на ваше программное обеспечение.
4.Python Pickle, это по существу сериализация?
Да.