Is it good practice to depend on python's with…as statement

后端 未结 2 1956
悲&欢浪女
悲&欢浪女 2021-02-04 09:24

I\'m curious if it is considered safe or good practice to depend on python\'s with...as statement. For example when opening a file:

with open(\"myfile\",\"w\") a         


        
2条回答
  •  太阳男子
    2021-02-04 09:54

    This is what context managers are for, to rely on them to close the file for you. Context managers are called even if there was an exception.

    The alternative is to use an finally block instead:

    myFile = open("myfile","w")
    try:
        # do something with myFile
    finally:
        myFile.close()
    

    but because the block inside of the try: might be long, by the time you get to the finally statement you have forgotten what you were setting this up for.

    Context managers are more powerful still. Because the __exit__ method is informed of any exceptions, they can act as exception handlers as well (ignore the exception, raise another, etc.).

提交回复
热议问题