On Apr 21, 6:10 pm, Chris Rebert <c...@rebertia.com> wrote: > On Wed, Apr 21, 2010 at 5:51 AM, ++imanshu <himanshu.g...@gmail.com> wrote: > > Is it possible to something along these lines in python :- > > > map = { > > 'key1': f(), > > 'key2': modify_state(); val = f(); restore_state(); val, > > 'key3': f(), > > } > > > For 'key2' I want to store the value returned by f() but after > > modifying the state. Do we have something like a "bare block". > > Based on what I can find about "bare blocks", Nope. And we like it that way > :-) > > > I am > > trying to avoid this :- > > > def f2(): > > modify_state() > > val = f() > > restore_state() > > return val > > > map = { > > 'key1': f(), > > 'key2': f2() > > 'key3': f(), > > } > > FWIW, I don't see what's wrong with this. You could probably refactor > f2() to use the `with` statement and a context manager, but that's > getting tangential. > However, the question arises: Why do you have global state in the first place? > > Cheers, > Chris > --http://blog.rebertia.com
f() = flavor independent os api for getting path to a folder, uses effective user id (eg Folder.FSFindFolder(Folders.kUserDomain, Folders.kInternetPlugInFolderType, Folders.kDontCreateFolder)) modify_state() = change current effective user id restore_state() = restore to old user id Thanks for the reply. Thank You, Himanshu -- http://mail.python.org/mailman/listinfo/python-list