Generator - yield inside with block in python function

De openkb
Aller à : Navigation, rechercher

Sommaire

Questions

I don t understand what s happening when the following function is called:

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

            # do smth
            yield instLine

why when the last line with yield is removed there s an error that the file doesn t exist (it really doesn t exist). Whereas, when I have the line , there s no error. Another question, why in the second case, print inFile has no effect while it has in the first case. Thanks.

Answers

Because you aren t actually iterating over the generator:

You have something similar to this in your code:

doSmth() # simply creates generator without advancing it

without the for x in doSmth()

Source

License : cc by-sa 3.0

http://stackoverflow.com/questions/16993938/yield-inside-with-block-in-python-function

Related

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Outils