On 06/10/12 09:54, Andrew McNabb wrote:
On Sat, Oct 06, 2012 at 08:41:05AM +1000, Steven D'Aprano wrote:
On 06/10/12 05:53, Andrew McNabb wrote:
Path concatenation is obviously not a form of division, so it makes little sense to use the division operator for this purpose.
But / is not just a division operator. It is also used for:
* alternatives: "tea and/or coffee, breakfast/lunch/dinner" * italic markup: "some apps use /slashes/ for italics" * instead of line breaks when quoting poetry * abbreviations such as n/a b/w c/o and even w/ (not applicable, between, care of, with) * date separator
This is the difference between C++ style operators, where the only thing that matters is what the operator symbol looks like, and Python style operators, where an operator symbol is just syntactic sugar. In Python, the "/" is synonymous with `operator.div` and is defined in terms of the `__div__` special method. This distinction is why I hate operator overloading in C++ but like it in Python.
I'm afraid that it's a distinction that seems meaningless to me. int + int and str + str are not the same, even though the operator symbol looks the same. Likewise int - int and set - set are not the same even though they use the same operator symbol. Similarly for & and | operators. For what it is worth, when I am writing pseudocode on paper, just playing around with ideas, I often use / to join path components: open(path/name) # pseudo-code sort of thing, so I would be much more comfortable writing either of these: path/"name.txt" path+"name.txt" than path["name.txt"] which looks like it ought to be a lookup, not a constructor. -- Steven