• Posts
  • RSS
  • ◂◂RSS
  • Contact

  • The 'expand this here' * operator in python

    September 29th, 2009
    programming, python  [html]
    The python docs (2.6.2) say this about the use of *:
    5.3.4:

    If the syntax *expression appears in the function call, expression must evaluate to a sequence. Elements from this sequence are treated as if they were additional positional arguments; if there are positional arguments x1,..., xN, and expression evaluates to a sequence y1, ..., yM, this is equivalent to a call with M+N positional arguments x1, ..., xN, y1, ..., yM

    7.6:

    If the * is present [in the function definition argument list], it is initialized to a tuple receiving any excess positional parameters, defaulting to the empty tuple
    This is very handy, but is also limited. In python 3.0, PEP 3132 added some related syntax:
    first, *rest = seq
    a, *b, c = range(5)
    This is again, handy but limited. This star syntax only works in these two cases: functions (star-args) and assignment targets. There are logical extensions that make a lot of sense to me, though. If one can do:
    first, *rest = seq
    then I want to be able to do:
    seq = first, *rest
    While the following is ambiguous and so clearly needs to be illegal:
    first, *some, *rest = seq
    this is not ambiguous:
    seq = first, *some, *rest
    While we're at it, lets make the following legal:
    foo(first, *some, *rest)
    All these changes together would make for a very consistent and powerful interpretation of * as 'expand this sequence here'.

    Update 2013-04-05: Danner points out a 2008 patch. This was put on hold because of the moratotium (to "allow non-CPython implementations to 'catch up'") but with 3.3 out I think the moratorium is over. I just poked the bug.

    Recent posts on blogs I like:

    Learning Worst Industry Practices

    If I have a bad idea and you have a bad idea and we exchange them, we now have two bad ideas. But more than that. If I have a bad idea and you have a good idea and we exchange them, we should both land on your good idea – but that requires both […]

    via Pedestrian Observations September 20, 2020

    Collections: Iron, How Did They Make It? Part I, Mining

    This week we are starting a four-part look at pre-modern iron and steel production. As with our series on farming, we are going to follow the train of iron production from the mine to a finished object, be that a tool, a piece of armor, a simple nail, a w…

    via A Collection of Unmitigated Pedantry September 18, 2020

    Learning Game

    I came up with this game. In the game one person thinks of something and then gives the other person a clue. And the other person writes a guess down on a blackboard or a piece of paper. Or really anything you have that's laying around that's av…

    via Lily Wise's Blog Posts September 17, 2020

    more     (via openring)


  • Posts
  • RSS
  • ◂◂RSS
  • Contact