Issue 18267: xmlrpc.client documentation multicall example missleading for division behaviour of python3 (original) (raw)

http://docs.python.org/3.4/library/xmlrpc.client.html as of 2013-06-19 20:35 UTC has a divide example and the output can misslead the learning reader towards the new behaviour of python3 with the '/' binary operator for division.

server code: def divide(x, y): return x/y client code: multicall.divide(7,3) [..] print("7+3=%d, 7-3=%d, 7*3=%d, 7/3=%d" % tuple(result))

The client call results into: python3 client.py 7+3=10, 7-3=4, 7*3=21, 7/3=2

This is missleading because '7/3' is now resulting to a float in python3 (see PEP238).The example probably was copied over from the python2 documentation where '7/3' result to int. The implicit conversion from float to int is done in the string formatting.

Proposal replace the print line with print("7+3=%d, 7-3=%d, 73=%d, 7/3=%g" % tuple(result)) to get 7+3=10, 7-3=4, 73=21, 7/3=2.33333 or print(repr(tuple(result))) to get (10, 4, 21, 2.3333333333333335)

Andrew, thanks for caring!

Seeing your fix 2a3bc6eb2e13 I believe it does not fully resolv the issue. Now the code reads "return x // y" "multicall.divide(7,3)" and the client prints "7/3=2"

I think you probably should change "7/3=" to "7//3=" in the client code as well to be instructive to learners.

By the way: your change also introduced whitespace around the operator. Now it is the only one out of the four. I guess they should be consistent.