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

regex in python python hunter

Regular Expressions is a powerful concept if understood clearly you can save your valuable time to extract out the particular text from huge string or paragraph. It is wildly pronounced as regex, it can help you to automate the boring stuff, like searching particular text form log files, python used this same concept in web scrapping. Below are some common examples to understand the regex. Method names will help you to have an idea that what exactly the regex is intended to do. if you don't understand any regex or want to create your own regex with your requirements then you can comment below, i'll reach you ASAP. Thanks. import re def phoneNumberPattern (): print ( "*" * 10 ) print ( "phoneNumberPattern()" ) regexObj = re . compile( r'\d\d\d-\d\d\d-\d\d\d\d' ) mo = regexObj . search( 'Find my phone number from this string 998-805-4332' ) print (mo . group()) def grouping (): print ( "*...

Fallback tag in xslt by pran sukh on python hunter blog.

Fallback: As the name is self explanatory to use something as an alternative if the primary thing does not work well. In xslt the fallback tag works as an alternative tag if any given tag does not work or is not supported by xslt processor.  Note: This fallback will always work in not supported tags, so run time exception will not occur. Data.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="XSL.xsl"?> <records> <record> <name> Adam Barr </name> <address> 222 Cherry </address> <phone> 555-797-2355 </phone> </record> <record> <name> Jeff Adell </name> <address> 730 Elm </address> <phone> 555-797-5555 </phone> </record> </records> XSL.xsl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1...

Understand the generators and yield keyword in python, on Python Hunter

Generators look like a function but there is huge difference b/w generators and function. Instead of return statements you will find only yield statements are used inside of the body of a generator , i.e. one or more yield statements.  In short the main feature of generator is that the last execution statement is kept remembered by python interpreter and the next time when the same generator is called the it execute from the last yield location instead of starting the location from TOP. And the state of all local variable(s) are kept safe, that means the local variable(s) will not change their value(s) at next call.      Follow the example to understand the concept. def gen():     yield 1     yield 2     yield 3     yield 4 f=gen() print(next(f)) # will print 1 print(next(f)) # will print 2 print(next(f)) # will print 3 Let's take a real example........... -------------------------------...