This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author FHTMitchell
Recipients FHTMitchell
Date 2018-05-17.11:33:26
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1526556806.68.0.682650639539.issue33555@psf.upfronthosting.co.za>
In-reply-to
Content
In python 2.7 if you run the following code you get an error (as you would expect)

Python 2.7.14 | packaged by conda-forge | (default, Dec 25 2017, 01:17:32) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> def f():
...     yield 1
...     return 2
...
  File "<stdin>", line 3
SyntaxError: 'return' with argument inside generator

However, in python 3.6 the error is silently ignored

Python 3.6.4 | packaged by conda-forge | (default, Dec 24 2017, 10:11:43) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> def f():
...     yield 1
...     return 2
...
>>> for i in f():
...     print(i)
...
1

and still is in 3.7

Python 3.7.0b2 (v3.7.0b2:b0ef5c979b, Feb 28 2018, 02:24:20) [MSC v.1912 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> def f():
...     yield 1
...     return 2
...
>>> for i in f():
...     print(i)
...
1

This is a source of confusion
 
https://stackoverflow.com/questions/47831240/why-is-no-value-returned-from-my-generator/
 
especially since the PEP says it is disallowed:

 https://www.python.org/dev/peps/pep-0255/#then-why-not-allow-an-expression-on-return-too
History
Date User Action Args
2018-05-17 11:33:26FHTMitchellsetrecipients: + FHTMitchell
2018-05-17 11:33:26FHTMitchellsetmessageid: <1526556806.68.0.682650639539.issue33555@psf.upfronthosting.co.za>
2018-05-17 11:33:26FHTMitchelllinkissue33555 messages
2018-05-17 11:33:26FHTMitchellcreate