2013-06-07 2 views
1

Я не понимаю, что происходит, когда следующая функция называется:выход изнутри блока в функции питона

def doSmth(inFile): 
    print inFile 
    with open(inFile,'r') as trainSet: 
     for instLine in trainSet: 

      # do smth 
      yield instLine 

почему, когда последняя строка с выходом удаляется есть ошибка , что файл не существует (его действительно не существует). Если у меня есть строка , ошибок нет. Другой вопрос, почему во втором случае print inFile не имеет никакого эффекта, когда он имеет в первом случае. Спасибо.

ответ

3

Потому что вы на самом деле не итерация генератора:

У вас есть что-то похожее на это в коде:

doSmth() # simply creates generator without advancing it 

без for x in doSmth()

Смежные вопросы