background preloader

Understanding Python's "with" statement

Understanding Python's "with" statement
Fredrik Lundh | October 2006 | Originally posted to online.effbot.org Judging from comp.lang.python and other forums, Python 2.5’s new with statement (dead link) seems to be a bit confusing even for experienced Python programmers. As most other things in Python, the with statement is actually very simple, once you understand the problem it’s trying to solve. Consider this piece of code: set things up try: do something finally: tear things down Here, “set things up” could be opening a file, or acquiring some sort of external resource, and “tear things down” would then be closing the file, or releasing or removing the resource. If you do this a lot, it would be quite convenient if you could put the “set things up” and “tear things down” code in a library function, to make it easy to reuse. def controlled_execution(callback): set things up try: callback(thing) finally: tear things down def my_function(thing): do something controlled_execution(my_function) This wasn’t very difficult, was it?

http://effbot.org/zone/python-with-statement.htm

Related:  programmingPythonAdvanced TopicsPy:Patterns

Switch-case statement in Python « The ByteBaker This post is part of the Powerful Python series where I talk about features of the Python language that make the programmer’s job easier. The Powerful Python page contains links to more articles as well as a list of future articles. In the months since this was written, I have received a number of comments and learned more about programming languages in general. How can I create a stand-alone binary from a Python script? You don’t need the ability to compile Python to C code if all you want is a stand-alone program that users can download and run without having to install the Python distribution first. There are a number of tools that determine the set of modules required by a program and bind these modules together with a Python binary to produce a single executable. One is to use the freeze tool, which is included in the Python source tree as Tools/freeze. It converts Python byte code to C arrays; a C compiler you can embed all your modules into a new program, which is then linked with the standard Python modules. It works by scanning your source recursively for import statements (in both forms) and looking for the modules in the standard Python path as well as in the source directory (for built-in modules). Obviously, freeze requires a C compiler.

The Python “with” Statement by Example Python’s with statement was first introduced five years ago, in Python 2.5. It’s handy when you have two related operations which you’d like to execute as a pair, with a block of code in between. The classic example is opening a file, manipulating the file, then closing it: with open('output.txt', 'w') as f: f.write('Hi there!') redirecting python's "print" statements to a file Something I find annoying about writing a program/script that writes to text files is that you explicitly have to write the linefeeds (things like "\n", "\r", "\r\n" or std::endl). I remember Pascal having something like a writeln() function, which was very handy when I spend my time programming in TurboPascal, but it's no real incentive at all to return to the "begin...end" mess of Pascal. Apparently java has a writeln function too. In Python you have the print statement, which also silently appends a linefeed (unless you end the statement with a comma). The default behaviour of print is to write to the standard output, but you can redirect this to files or other writable objects (technically all objects that have a write method). That way you can use short, simple and clear print statements instead of those cluttered object.write( "wello horld" + "\n") constructs.

Django templates · Django Girls Tutorial Time to display some data! Django gives us some helpful built-in template tags for that. You see, in HTML, you can't really write Python code, because browsers don't understand it. They know only HTML. We know that HTML is rather static, while Python is much more dynamic. Django template tags allow us to transfer Python-like things into HTML, so you can build dynamic websites faster and easier.

How to edit an image Aquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}. Acredita-se que este artigo ainda seja válido no contexto original (quando ele foi escrito) Overview

Deep Thoughts by Raymond Hettinger If you aren’t wowed by Python’s super() builtin, chances are you don’t really know what it is capable of doing or how to use it effectively. Much has been written about super() and much of that writing has been a failure. This article seeks to improve on the situation by: providing practical use casesgiving a clear mental model of how it worksshowing the tradecraft for getting it to work every timeconcrete advice for building classes that use super()favoring real examples over abstract ABCD diamond diagrams. The examples for this post are available in both Python 2 syntax and Python 3 syntax.

Python metaclasses by example Python rightfully prides itself as a relatively straightforward language without a lot of "magic" hiding in its workings and features. Sometimes, however, to make interesting abstractions possible, one can dig deep in Python’s more dusty and obscure corners to find language constructs that are a bit more magical than usual. Metaclasses are one such feature. Unfortunately, metaclasses have a reputation for "a solution seeking a problem". The aim of this article is to demonstrate a few actual uses of metaclasses in widely used Python code. There is a lot of material on Python metaclasses online, so this isn’t just another tutorial (look in the References section below for some links I found useful). 20.8. ftplib — FTP protocol client — Python v2.6.5 documentation Source code: Lib/ftplib.py This module defines the class FTP and a few related items. The FTP class implements the client side of the FTP protocol. You can use this to write Python programs that perform a variety of automated FTP jobs, such as mirroring other ftp servers.

Example: Software Architecture Document A description of the logical view of the architecture. Describes the most important classes, their organization in service packages and subsystems, and the organization of these subsystems into layers. Also describes the most important use-case realizations, for example, the dynamic aspects of the architecture.

Related:  Python Learning