# [Python-ideas] Making stars optional? (was: Making colons optional?)

Steven D'Aprano steve at pearwood.info
Sat Feb 7 00:59:18 CET 2009

```Georg Brandl wrote:
> Steven D'Aprano schrieb:
>
>> Mathematicians get away with this sort of ambiguity because they are
>> writing for other mathematicians, not for a computer. Because
>> mathematical proofs rely on a sequence of equations, not just a single
>> statement, the ambiguity can be resolved:
>>
>> y = a(b+c) - ac  # does this mean a+() or a*() or something else?
>> y = ab + ac - ac  # ah, it must have been a*()
>> y = ab
>
> No context is needed to know what a(b+c) means.

Only if you assume that the mathematician didn't make a typo. Any
operator could appear between the a and the bracketed term: you're
deducing the presence of an implied multiplication by the absence of an
operator, which is the convention in mathematics, but it is an unsafe
deduction if you have only a single line in isolation. It only becomes
safe in context because any accidental omission of the operator should
become obvious in the following line(s) of the proof.

I'm not saying this as a criticism of mathematicians. They value brevity
over the increased protection from typos, which is a valid choice to
make. But it is not a choice available to Python, because we have
multi-character variable names, and mathematical expressions stand alone
in Python code, they aren't part of an extended proof.

> In maths,
> you only have single-character variable names (sub-/superscripts
> notwithstanding), so ab always means a*b.

Except in the presence of typos. This is a small risk for
mathematicians, but a large risk for Python programmers. Not because
mathematicians are better typists than Python programmers, but because
there are more opportunities to catch the typo in a mathematical proof
than there are in a program.

--
Steven

```