On 01/28/10 20:12, Alf P. Steinbach wrote: > * Steven D'Aprano: >> On Wed, 27 Jan 2010 18:29:25 +0100, Alf P. Steinbach wrote:> >> Instead of: >> >> print >>fileObj, x, y, z >> >> you use regular function syntax with a meaningful keyword: >> >> print(x, y, z, file=fileObj) >> >> If you want suppress the newline at the end of each print: >> >> print x, y, z, # note the final comma >> >> compared to: >> >> print(x, y, z, end='') > > Actually I thought the final comma thing was nice. It was like Basic. I > think the 2.x 'print' must have been modeled on Basic's 'print'.
if that was true, then python missed the final semicolon >> If you want to change the space between elements, instead of: >> >> sys.stdout.write(str(x) + "*" + str(y) + "*" + str(z) + '\n') >> >> you use: >> >> print(x, y, z, sep='*') >> >> >> If you want to override the behaviour of print in a module, instead of >> having to edit the source code of the module (which might not even be >> available), all you need to do is monkey-patch it: >> >> import module >> module.print = myprint > > >>> import builtins > >>> > >>> org_print = print > >>> builtins.print = 666 > >>> > >>> print( "trallala" ) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > TypeError: 'int' object is not callable > >>> org_print( "but is that really so smart?" ) > but is that really so smart? > >>> _ Monkey patching follows (or should follow) the same rule as class inheritance overriding: the overrider's input domain must be a superset of the overriden's input domain and the overrider's output range must be a subset of the overriden's output range. 666 object (int) is not even remotely compatible with function object. -- http://mail.python.org/mailman/listinfo/python-list