Why use "locals()"

Sean DiZazzo half.italian at gmail.com
Mon Sep 14 00:54:00 EDT 2009


> > I have never used a call to "locals()" in my code.  Can you show me a
> > use case where it is valuable and Pythonic?
>> def print_item(item):
>      description = textwrap.fill(item.description, 40)
>      short = item.description.split('\n', 1)[0]
>      code = str(item.id).zfill(6)
>      print "%(code)s %(short)s\n%(description)s\n" % locals()

I see the use of that, but according to Zen, "Explicit is better than
implicit."
>> Transferring arguments:
>> def foo(some, long, list, of, arguments):
>      additional = 5
>      return other(**locals())
>
Why not?:
def foo(**kwargs):
 kwargs["additional"] = 5
 return other(**kwargs)
> Defining properties:
>> class ColourThing(object):
>      @apply
>      def rgb():
>          def fset(self, rgb):
>              self.r, self.g, self.b = rgb
>          def fget(self):
>              return (self.r, self.g, self.b)
>          return property(**locals())
>
So really it's just a short hand. But it's against the Zen! Explicit
not Implicit! I'm not convinced....then again, I didn't look at the
source code of the standard libraries.
~Sean


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /