Chris Angelico (2018-May-08, excerpt):
> What exactly would be the scope of the assigned name?

Yes, that's more like the kind of answer I was seeking.  But I'm not
entirely satisfied.

> def sort_func(item):
>     date = parse_date(item.creation_date)
>     return date.day_of_week, date.year, date.month, date.day
> items.sort(key=sort_func)

This function contains two statements.  Would be nice to see a
one-statement variant that exposes the same necessity of local
assignment.

I have not thought about local assignment expressions, but they can
already now be done naturally as follows:

    lambda item: (lambda date: date.day_of_week, date.year, date.month, 
date.day)(parse_date(item.creation_date)

But this is stretching the usefulness of Python's lambda (readability)
quite a bit, I have to admit.

Anyway, I was rather thinking about global assignment.  And there
would even be choice in whether it should be always global, Python has
a rule for that in the following case:

    x = 23

    def foo(y):
        x = 2 * y                       # this is local
        print('x in foo', x)

    print('x before foo', x)
    foo(42)
    print('x after foo', x)


    class z:
        v = 12345

    def bar(y):
        z.v = 2 * y                     # this is global
        print('z.v in bar', z.v)

    print('z.v before bar', z.v)
    bar(0)
    print('z.v after bar', z.v)

Cheers
Stefan


--
http://stefan-klinger.de                                      o/X
Send plain text messages only, not exceeding 32kB.            /\/
                                                                \
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to