[Python-Dev] Matrix product (original) (raw)

Cesare Di Mauro cesare at pronto.it
Thu Jul 31 21:25:57 CEST 2008


Nick Coghlan write:

Sebastien Loisel wrote:

Dear Raymond,

Thank you for your email.

I think much of this thread is a repeat of conversations that were held for PEP 225: http://www.python.org/dev/peps/pep-0225/

That PEP is marked as deferred. Maybe it's time to bring it back to life. This is a much better PEP than the one I had found, and would solve all of the numpy problems. The PEP is very well thought-out. A very interesting read! I wouldn't support some of the more exotic elements tacked on to the end (particularly the replacement of the now thoroughly entrenched bitwise operators), but the basic idea of providing ~op variants of several operators seems fairly sound. I'd be somewhat inclined to add ~not, ~and and ~or to the list even though that would pretty much force the semantics to be elementwise for the ~ variants (since the standard not, and and or are always objectwise and without PEP 335 there's no way for an object to change that). Cheers, Nick.

I agree: adding ~op will be very interesting.

For example, we can easily provide case insensitive comparisons for string:

if foo ~== 'Spam': print "It's spam!'

equivalent to:

if foo.upper() == 'SPAM: print "It's spam!'

we can save both CPU time and memory to build a brand new string that will be discarded after the comparison...

It will be also useful to redefine /, // and ** operators to do some common operations:

'spam, egg' / ', ' could be equivalent to iter('spam, egg'.split(', ')) # Generates an iterator

'spam, egg' // ', ' could be equivalent to 'spam, egg'.split(', ') # Generates a list

and ', ' ** ('spam', 'egg') could be equivalent to ', '.join(('spam', 'egg'))

but unfortunately we know that at the moment buil-in types cannot be "extended" through "monkey patching"...

Cesare



More information about the Python-Dev mailing list