It is common to use _ as a placeholder for variable whose value is not
used. For example:

    for _ in range(n)
    head, _, tail = name.partition(':')
    first, *_, last = items

I though about optimizing out unnecessary assignments. Actually I wrote
a patch half year ago and tested it. It did not add much to performance,
and did not reduce the bytecode, so I ccoled down to him and put it off.
Later PEP 622 was declared the use of _ in pattern matching, so I was
waiting for what it would come to. And now PEP 640 is created to solve
the same problem.

My patch was too conservative. It was limited to local variables and
underscored names. For global variables we can't determine if the
variable is not used. And eliminating unused non-underscored variables
breaks too many tests (mainly for debugger, tracing, etc).

I was not sure whether it should be limited to underscored names or just
'_' (I seen also uses of '__' as a drop out variable in wild).

Maybe we can extend this to global '_'. Global '_' is used as a holder
for the last result in REPL and as an alias to gettext (this is the
reason of PEP 640), but none of them is actually set in the assignment
statement. You can use `globals()['_'] = ...` or `globals().update({'_':
...})` or `sys.modules[__name__]._ = ...` to set global '_'.

I do not want to create tens of alternate PEPs with minor variations,
and this issue is not worth a PEP. What is your opinion about this? Is
it worth to include such optimization? For what kind of variables should
it be applied? Should it include global '_'? Should it be merely an
optimization (maybe controlled by the -O option) or change in the language?
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/UF22D3FOJIA4JAHEV4FPMZLIG6XE7V3X/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to