On 01/10/16 23:08, boB Stepp wrote: > On Sat, Oct 1, 2016 at 11:35 AM, Alan Gauld via Tutor <tutor@python.org> > wrote: > >> ... Personally I don't like functions that >> sometimes return one and sometimes two results. I'd rather >> you returned a None first argument in the first case >> to make it consistent. > > Why don't you like doing this? What are the pluses and minuses as you > see them?
Because client code has to guess which return value is relevant consider def f(x): if x%2: # is odd return x,x+1 else: return x Now I want to use f on a collection of integers: nums = [1,2,3,4] for n in nums: result = f(n) if result <= 3: # broken for 1 and 3 print("success") else: .... But if I change it to for n in nums: result = f(n) if result[0] <= 3: # now broken for 2 and 4 print("success") else: .... So I need to introduce code to determine whether I got an int or a tuple back and then separate code for each case. If I know that the result is always an int I can use the first case if I know its always a tuple I can use the second. But not knowing which is just plain messy. -- Alan G Author of the Learn to Program web site http://www.alan-g.me.uk/ http://www.amazon.com/author/alan_gauld Follow my photo-blog on Flickr at: http://www.flickr.com/photos/alangauldphotos _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor