It really feels now like you are TRYING to miss the point of equality and
identity, and why 'is None' checks are the correct approach to recommend.

Here's a slightly contrived, but not absurd function.  I've certainly
written a great many that follow this general form.

>>> def add_multiples(elements=None, multiples=None):
...     if elements == None:
...         # Default to the intergers 1 to 10
...         elements = list(range(1, 11))
...     if multiples == None:
...         multiples = [1] * len(elements)
...     total = 0
...     for e, m in zip(elements, multiples):
...         total += e*m
...     return total
...
>>> a = [13, 27, 52]
>>> b = [1, 2, 3]
>>> add_multiples(a, b)
223
>>> add_multiples()
55

I was just reading something that mentioned the famous Gauss sum of
sequential numbers :-).

We can try this with other sequences of numbers where it should succeed
(and DOES if I use the clear and obvious approach rather than deliberately
confusing identity and equality):

>>> c = np.array([13, 27, 52])
>>> d = range(1, 1000)
>>> add_multiples(c, d)
Traceback (most recent call last):
  File "<ipython-input-38-c4826ecd2a2e>", line 1, in <module>
    add_multiples(c, d)
  File "<ipython-input-8-8c58e2c77071>", line 2, in add_multiples
    if elements == None:
ValueError: The truth value of an array with more than one element is
ambiguous. Use a.any() or a.all()
_______________________________________________
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/YCYFA5M2XHO3FQCF525Z2D4NLDXSVOVC/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to