Inline Calculation of Dictionary Values

++imanshu himanshu.garg at gmail.com
Wed Apr 21 10:46:03 EDT 2010


On Apr 21, 6:10 pm, Chris Rebert <c... at rebertia.com> wrote:
> On Wed, Apr 21, 2010 at 5:51 AM, ++imanshu <himanshu.g... at 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




More information about the Python-list mailing list