On Sat, 30 Oct 2010 15:05:37 +1300, Lawrence D'Oliveiro wrote: > In message <mailman.168.1287872943.2218.python-l...@python.org>, geremy > condra wrote: > >> ... dividing strings by a number doesn't make sense. > > The logical meaning would be the opposite of multiplying strings by a > number: > > >>> "abc" * 3 > 'abcabcabc' > >>> "abcabcabc" // 3 > 'abc'
That is a hyper-generalisation. Just because * and + are defined for strings doesn't mean we have to define other operators as well. In general, given a string S, there is no substring s such that s*n = S and therefore in general S//n will almost always raise an error, for nearly all S and nearly all n. Of the infinite number of combinations of string S and integer n, only a vanishingly small proportion will define S//n. Given how rarely string division would apply, and the lack of any real-world use-case, there is no sensible reason to define S//n. One could define functions that do anything, but very few of them are useful. Defining string//int, or string//string, are not some of the useful ones. One might as well define math.sqrt("spam\nspam\nspam\spam") = "spam" (it's spam in a square, geddit?) and declare that's the "logical" meaning. But that would be silly. -- Steven -- http://mail.python.org/mailman/listinfo/python-list