On Thu, Jul 30, 2015 at 05:58:27PM -0700, D Wyatt wrote: > I just read in a book a little while ago that ** trumps a negative > sign?
Correct. Exponentiation has higher priority than subtraction, addition, multiplication and division: 2+3**2 => 11 not 25 10-3**2 => 1 not 49 2*3**2 => 18 not 36 100/5**2 => 4 not 400 As you have discovered, it also has higher priority than unary minus so that: -3**2 => -(3**2) => -9 NOT (-3)**2 => 9 Mathematically, this is perfectly acceptable, and what we would normally expect. In algebra, if we write: -x² we normally mean the negative of (x squared), not (negative x) squared, which would be just x². So Python here agrees with standard mathematical notation. > I am struggling with the audacity of that as -1 is negative 1, > NOT minus 1. How can an arithmetic operation trump an attribute of a > negative integer? It truly makes no sense to me. Thank you for any > enlightenment you can provide. Speaking as a maths tutor with about 20 years experience, and a B.Sc. with a major in mathematics, I'm not sure I understand what you are getting at. There is no mathematical difference between the inherent negativeness of -1 and the arithmetic operation - 1 (unary minus operator followed by 1). Whichever way you treat it, we have to agree what it means. For example, 2x means 2 multiplied by x; but 23 doesn't mean 2 multiplied by 3. It could if we wanted it to, but that would be inconvenient. Mathematicians could define -3² as (-3)² = 9 if they wanted to, but generally they don't, although there are exceptions. Consequently such expressions are ambiguous and are best avoided. Although -x² never means -x squared, it always means minus (x squared). Python removes the ambiguity and has exponentiation always take priority over other arithmetic operators, regardless of whether you consider - a unary or binary operator, or an inherent part of the integer. Although, for the record, the standard Python interpreter does NOT parse an expression like -123 as "negative 123", but as "unary minus 123". In practice this makes zero difference to the code. -- Steve _______________________________________________ Tutor maillist - [email protected] To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor
