On 06/23/2018 11:02 PM, Chris Angelico wrote:
On Sun, Jun 24, 2018 at 3:44 PM, Jim Lee <jle...@gmail.com> wrote:

On 06/23/2018 10:03 PM, Steven D'Aprano wrote:
I'd like to run a quick survey. There is no right or wrong answer, since
this is about your EXPECTATIONS, not what Python actually does.

Given this function:


def test():
      a = 1
      b = 2
      result = [value for key, value in locals().items()]
      return result




what would you expect the result of calling test() to be? Is that the
result you think is most useful? In your opinion, is this a useful
feature, a misfeature, a bug, or "whatever"?

I'm only looking for answers for Python 3. (The results in Python 2 are
genuinely weird :-)


I would *expect* [1, 2, None], though I haven't actually tried running it.

Interesting. Where do you get the None from? Suppose it had been "key
for..." instead of "value", what would the third key have been? ["a",
"b", ...]

ChrisA
There are three locals:  a, b, and result.  Since result cannot be assigned a value until the list comp has been evaluated, I would expect the comp to return a value of "None" for result.  An argument could also be made for [1, 2, []], but one thing I would *not* expect is [1, 2] or [2, 1]...

-Jim


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to