Я хотел выбрать Нулевые аргументы от других недопустимых аргументов, таким образом, я получил исключение из IAE под названием NullArgumentException. Даже не будучи должен прочитать сообщение об исключении, я знаю, что нулевой аргумент был передан в метод и путем чтения сообщения, я узнаю, какой аргумент был пустым. Я все еще ловлю NullArgumentException с обработчиком IAE, но в моих журналах то, где я вижу различие быстро.
Гарантия для списков. Я думаю, что более подходящим Python, параллельным вашему примеру C #, будет итерация по ключам в словаре, который НЕ гарантируется в любом порядке.
# Always prints 0-9 in order
a_list = [0,1,2,3,4,5,6,7,8,9]
for x in a_list:
print x
# May or may not print 0-9 in order. Implementation dependent.
a_dict = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
for x in a_dict:
print x
для
структура беспокоится только о том, что итерабельность
предоставляет функцию next ()
, которая что-то возвращает. Нет общей гарантии, что эти элементы будут возвращены в любом порядке по домену оператора for..in
; списки - это особый случай.
Да, это полностью гарантировано. для элемента в myarray
(где myarray
- это последовательность , которая включает массивы numpy, встроенные списки, массивы Python и т. Д.), Фактически эквивалентна в Python:
_aux = 0
while _aux < len(myarray):
item = myarray[_aux]
...etc...
для некоторой фантомной переменной _aux
;-). Кстати, обе ваши конструкции также эквивалентны
itemlist = list(myarray)
Да, Справочник по языку Python это гарантирует (выделено мной):
for_stmt ::= "for" target_list "in" expression_list ":" suite
["else" ":" suite]
"Набор затем выполняется один раз для каждого элемента, предоставленного итератор, в порядке возрастания индексов . "