On 17.12.2017 22:20, Serhiy Storchaka wrote:
Currently repr of doesn't contain much of information besides that it is a lambda.

>>> lambda x: x**2
<function <lambda> at 0x7f3479b74488>

All lambdas have the same repr, different only by unreadable hexadecimal address.

What if include the signature and the expression of the lambda in its repr?

>>> lambda x: x**2
<lambda x: x**2>

It's the same for named functions:

    In [1]: def ditto(a): return a

    In [2]: ditto
    Out[2]: <function __main__.ditto>

Are you intending to do the same for them?
This would return an old feature of Python 0.9.1 (https://twitter.com/dabeaz/status/934835068043956224).

Repr of function could contain just the signature.

<function foo(bar, baz)>

But there is a problem with default values. Their reprs can be very long, especially in the following case with mutable default value:

def foo(x, _cache={}):
    try:
        return _cache[x]
    except KeyError:
        pass
    _cache[x] = y = expensive_calculation(x)
    return y

Maybe the placeholder should be always used instead of default values.

_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

--
Regards,
Ivan

_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to