Skip to main content

Understanding "with" keyword in python, on Python Hunter



Just like anything in python, keyword "with" is introduced in python to make the things little easy. Imagine a situation where you have to manage the resources e.g opening file and closing them after the code is executed on file. To achieve this sort of task we have to write the code as follow:


 Follow Python Hunter on youtube   Follow Python Hunter on twitter Follow on tumbl ( at your own risk ) check profile on linkedIn 






Code: - def fileOperation(fileName):     file=open("file.txt")     return file   try:     content=fileOperation("file.txt")     print(content.read()) except:     print("exception") finally:     content.close()
Download 


But if you do it often you could do this as follow to make the code reusable:





But why do you need to do this when you know that you have to execute the only for once. To answer this question python-dev team finally came up with following approach:
Note:- Make sure you have "file.txt" and python code file in same dir.

The "with" keyword replaces the try finally block. "with" keyword executes the openFileClass() context manager and internally calls the __enter__(self) method, and whatever is being returned from __enter__(self) method is being stored in target variable (in this example it is as file). and just like finally the __exit__(self,type,value,traceback) method executes and act as safe guard, it means that no matter what happens in the __enter__(self) method the  __exit__(self,type,value,traceback) is responsible to execute in any case.

NOTE:- No matter if there is any exception in code, the __exit__(self,type,value,traceback) will get executed for safe keeping and this is where your final work should be (e.g closing files)

Nesting of Contexts:-

Download full example

Download Other Useful Examples:-



know about the raise keyword? no? then follow this simple post to get through this.


Click here to understand the "raise" keyword.

Comments

  1. More posts on classes and inheritance will be uploaded soon, and regarding this current post if you face any issue please feel free to contact me on

    hitman47silent994c4@gmail.com

    Thanks.

    ReplyDelete
  2. Thanks for your tutorial, it's really helpful for beginners.

    ReplyDelete
    Replies
    1. Thanks aman, keep following the blog PythonHunter for more updates or google for pransukh.blogspot.in #pransukh

      Delete

Post a Comment

Thanks in anticipation.

Popular posts from this blog

XML, XSLT info by pran sukh on Python Hunter blog.

What is XML? Many computer systems contain data in incompatible formats. Exchanging data between incompatible systems (or upgraded systems) is a time-consuming task for web developers. Large amounts of data must be converted, and incompatible data is often lost. XML stores data in plain text format. This provides a software- and hardware-independent way of storing, transporting, and sharing data. XML also makes it easier to expand or upgrade to new operating systems, new applications, or new browsers, without losing data. With XML, data can be available to all kinds of "reading machines" like people, computers, voice machines, news feeds, etc. XML:- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category= "cooking" > <title lang= "en" > Every

Understanding the usage of underscore( _ ) of Python for beginner. On Python Hunter

Introduction: Just like you, a newbie in python scripting language, me too was confused about lot of new things in python that are not valid or available in other languages like Java, .Net etc. Just like other things i had seen the use of '_' underscore in python, at beginning level that flabbergasted me for a while.      With some research and practice i have summarised the following usage of '_' underscore in python. Hope you will find it helpful at beginning level. First Usage : Hold the previous output value. When used in interpreter. 1 2 3 4 5 6 7 _ = input () # For example you typed '5' print (_) # This will print '5' print ( int ( _ ) * int ( _ ) ) # This will print '25' print ( int ( _ ) + 10 ) The above will print '15', because last input was "5" and in above   line of code is producing '25' as output but not being handl

XSLT apply import tag by pran sukh on python hunter blog

Modular Programming is good attitude of best programmer. We often need to keep our code in modular approach so that is would be easy to maintain  and update or remove dead code and also it ease the process of bug tracking. XML and XSL  processors provide freedom to import multiple imports to process the same  XML  document. In the following  XML  data we have data from collage where student's and teacher's data is given. But we want to process the same  XML  data with different XSL files. Here in this example we want to show the teacher data in red background color and student data in green background color. Data.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 <?xml version = "1.0"?> <?xml-stylesheet type = "text/xsl" href = "RootXSLT.xsl"?> <data> <DataFor name = "Student" id = "001" > <firstname>