On Jun 13, 10:44 am, Mike Kazantsev <mk.frag...@gmail.com> wrote: > On Fri, 12 Jun 2009 22:02:53 -0700 (PDT) > > > > > > Andrew Savige <ajsav...@yahoo.com.au> wrote: > > I'd like to convert the following Perl code to Python: > > > use strict; > > { > > my %private_hash = ( A=>42, B=>69 ); > > sub public_fn { > > my $param = shift; > > return $private_hash{$param}; > > } > > } > > print public_fn("A"); # good: prints 42 > > my $x = $private_hash{"A"}; # error: good, hash not in scope > > ... > > > What is the Pythonic equivalent of Perl's lexical scope, as > > illustrated by the code snippet above? > > If you're using scope for garbage-collecting purposes, there's "with" > statement and contextlib: > > from contextlib import contextmanager > > @contextmanager > def get_hash(): > complex_hash = dict(A=42, B-69) > try: yield complex_hash > except Exception as ex: > del complex_hash # complex destructor ;) > raise ex > > with get_hash() as hash: > # do stuff with hash > > Note that this only makes sense if you need to implement some complex > operation on hash destruction, and do that whatever-happens-inside-with > to close the object, obviously not the case with simple dict above. > > And if you want to obfuscate one part of your code from another, you'll > probably have better luck with languages like java, since no one seem > to care about such stuff with python, so it'd be a hack against the > language, at best. > Why would you want to hide the code from itself, anyway? It's not like > you'd be able to accomplish it - code can easily grep it's process body > in memory and harvest all the "private" values, so I'd suggest getting > some fresh air when you start to feel like doing that. > > -- > Mike Kazantsev // fraggod.net > > signature.asc > < 1KViewDownload
Check http://www.voipsipsdk.com its a good one. -- http://mail.python.org/mailman/listinfo/python-list