About that 'yield' word

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Tobiah

    About that 'yield' word


    def maker():
    for i in range(100):
    yield i


    foo:4: Warning: 'yield' will become a reserved keyword in the future
    File "foo", line 4
    yield i
    ^
    SyntaxError: invalid syntax

    Python 2.2.2


    ???

  • Alex Martelli

    #2
    Re: About that 'yield' word

    Tobiah wrote:
    [color=blue]
    >
    > def maker():
    > for i in range(100):
    > yield i
    >
    >
    > foo:4: Warning: 'yield' will become a reserved keyword in the future
    > File "foo", line 4
    > yield i
    > ^
    > SyntaxError: invalid syntax
    >
    > Python 2.2.2
    >
    >
    > ???[/color]

    You seem to have omitted the necessary statement at the start
    of your module (in Python 2.2):
    from __future__ import generators

    Alternatively, upgrade to 2.3, and you won't need that statement
    any more.


    Alex

    Comment

    • David Eppstein

      #3
      Re: About that 'yield' word

      Tobiah wrote:[color=blue][color=green]
      > >
      > > def maker():
      > > for i in range(100):
      > > yield i
      > >
      > >
      > > foo:4: Warning: 'yield' will become a reserved keyword in the future
      > > File "foo", line 4
      > > yield i
      > > ^
      > > SyntaxError: invalid syntax
      > >
      > > Python 2.2.2
      > >
      > >
      > > ???[/color][/color]

      I guess this was just thrown together as an example of "yield", rather
      than real code, but:

      def maker():
      return range(100)

      seems a little less contorted...

      --
      David Eppstein http://www.ics.uci.edu/~eppstein/
      Univ. of California, Irvine, School of Information & Computer Science

      Comment

      • Lulu of the Lotus-Eaters

        #4
        Re: About that 'yield' word

        |Tobiah wrote:
        |> > def maker():
        |> > for i in range(100):
        |> > yield i

        David Eppstein <eppstein@ics.u ci.edu> wrote previously:
        |I guess this was just thrown together as an example of "yield", rather
        |than real code, but:
        |def maker():
        | return range(100)

        And less contorted still is:

        xrange(100)

        :-).

        --
        Keeping medicines from the bloodstreams of the sick; food from the bellies
        of the hungry; books from the hands of the uneducated; technology from the
        underdeveloped; and putting advocates of freedom in prisons. Intellectual
        property is to the 21st century what the slave trade was to the 16th.

        Comment

        • Andrew Koenig

          #5
          Re: About that 'yield' word

          >> > def maker():[color=blue][color=green][color=darkred]
          >> > for i in range(100):
          >> > yield i
          >> >[/color][/color][/color]

          David> I guess this was just thrown together as an example of "yield",
          David> rather than real code, but:

          David> def maker():
          David> return range(100)

          David> seems a little less contorted...

          Maybe so, but it behaves differently so direct comparisons aren't
          particularly helpful:
          [color=blue][color=green][color=darkred]
          >>> def maker():[/color][/color][/color]
          .... for i in range(100):
          .... yield i
          ....[color=blue][color=green][color=darkred]
          >>> def maker1():[/color][/color][/color]
          .... return range(100)
          ....[color=blue][color=green][color=darkred]
          >>> maker()[/color][/color][/color]
          <generator object at 0x1d80f8>[color=blue][color=green][color=darkred]
          >>> maker1()[/color][/color][/color]
          [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

          --
          Andrew Koenig, ark@acm.org

          Comment

          • David Eppstein

            #6
            Re: About that 'yield' word

            In article <yu994qynhi6q.f sf@tinker.resea rch.att.com>,
            Andrew Koenig <ark@acm.org> wrote:
            [color=blue]
            > David> def maker():
            > David> return range(100)
            >
            > David> seems a little less contorted...
            >
            > Maybe so, but it behaves differently so direct comparisons aren't
            > particularly helpful:[/color]

            I considered mentioning iter(range(100) ) instead but I couldn't think of
            an actual reason one would care about the difference.

            --
            David Eppstein http://www.ics.uci.edu/~eppstein/
            Univ. of California, Irvine, School of Information & Computer Science

            Comment

            Working...