[Python-ideas] Return for assignment blocks

Calvin Spealman cspealma at redhat.com
Wed Oct 24 10:04:30 EDT 2018


My idea is not "assignment blocks" those already exist. `def` and `class`
blocks are both syntaxes that assign to some name. I'm just using the term
to refer to them as a group.

The proposal is just being able to return them. These two examples become
equivalent:

def ignore_exc(exc_type):
    return def (func):
        @wraps(func)
        return def (*args, **kwargs):
            try:
                return func(*args, **kwargs)
            except exc_type:
                pass

def ignore_exc(exc_type):
    def decorator(func):
        @wraps(func)
        def wrapped_func(*args, **kwargs):
            try:
                return func(*args, **kwargs)
            except exc_type:
                pass
        return wrapped_func
    return decorator

On Wed, Oct 24, 2018 at 9:51 AM Benedikt Werner <1benediktwerner at gmail.com>
wrote:

> Would you mind providing a bit more details about your proposal?
>
> What exactly are those "Assignment Blocks" supposed to do?
>
> If I understand your proposal correctly you want this:
>
> def my_func():
>     return def():
>         print("abc")
>
> to be the same as this:
>
> def my_func():
>     def inner_func():
>         print("abc")
>     return inner_func
>
> But this is only my assumption as your proposal doesn't give very much
> details.
> Maybe you should provide a few simple examples and explain what they are
> supposed to do or what they should be equivalent to.
>
> Your example is quite complex and to me it's not clear at all what it is
> supposed to mean.
>
> Also and probably most importantly what is the reason you want this? Are
> there any good usecases where this would help?
>
> If my assumption above is correct this just looks like a bit of syntactic
> sugar that IMO isn't really neccessary. It doesn't really improve
> readability or save many characters. The existing way to do this is totally
> fine.
>
> Benedikt
>
> Am 24.10.2018 um 15:18 schrieb Calvin Spealman:
>
> I'd like to suggest what I think would be a simple addition to `def` and
> `class` blocks. I don't know if calling those "Assignment Blocks" is
> accurate, but I just mean to refer to block syntaxes that assign to a name.
> Anyway, I propose a combined return-def structure, and optionally also
> allowing a return-class version. Omitting the name would be allowable, as
> well.
>
> This would only apply to a `def` or `class` statement made as the last
> part of the function body, of course.
>
> def ignore_exc(exc_type):
>     return def (func):
>         @wraps(func)
>         return def (*args, **kwargs):
>             try:
>                 return func(*args, **kwargs)
>             except exc_type:
>                 pass
>
> Thanks for considering and for any comments, thoughts, or feedback on the
> idea!
>
>
> _______________________________________________
> Python-ideas mailing listPython-ideas at python.orghttps://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20181024/566b5de8/attachment-0001.html>


More information about the Python-ideas mailing list