В первую очередь, itertools модуль невероятно полезен для всех видов случаев, в которых итератор был бы полезен, но здесь является всем, что необходимо создать итератор в Python:
урожай
, который не прохладен? Урожай может использоваться для замены нормального возврат в функции. Это возвращает объект все равно, но вместо того, чтобы уничтожить состояние и выход, это сохраняет состояние для того, когда Вы хотите выполнить следующее повторение. Вот пример его в действии, которое вытягивают непосредственно от список функции itertools :
def count(n=0):
while True:
yield n
n += 1
, Как указано в описании функций (это количество () функция от itertools модуля...), это производит итератор, который возвращает последовательные целые числа, запускающиеся с n.
выражения Генератора являются целой другой кучей проблем (потрясающие черви!). Они могут использоваться вместо Понимание Списка для сохранения памяти (понимания списка создают список в памяти, которая уничтожается после использования, если не присвоенный переменной, но выражениям генератора может создать Объект генератора..., который является необычным способом сказать Итератор). Вот пример определения выражения генератора:
gen = (n for n in xrange(0,11))
Это очень похоже на наше определение итератора выше кроме полного спектра, предопределяется, чтобы быть между 0 и 10.
я просто нашел xrange () (удивил, я не видел его прежде...), и добавил его к вышеупомянутому примеру. xrange () является повторяемой версией [1 118] диапазон () , который имеет преимущество не предварительного создания списка. Было бы очень полезно, если бы Вы имели гигантский корпус данных для итерации и только имели такую память для выполнения в нем.
Кусок пирога:
yourstub.AssertWasCalled(
x => x.DoSomething(
Arg<string>.Is.Equal("value1"),
Arg<someObjectType>.Is.Equal(value2),
Arg<someOtherObjectType>.Is.Anything, <======== NOTE THIS!
Arg<someOtherOtherObjectType>.Is.Equal(value3)
)
);
Посмотрите документацию на предмет ограничений .
Я подозреваю, что вы хотите:
Expect.Call(object.DoSomething(null, null, null, null)
.IgnoreArguments() // Ignore those nulls
.Constraints(Is.Equal("value1"),
Property.Value("PropertyA", "value2"),
Is.Anything(),
Is.Anything())
.Return(whateverItShouldReturn);