Is there something I can return instead of 'None' so that it's still iterable but empty? Sometimes I want to return two values but sometimes I only want to return one.
for distance in range(1, 8):
temp_cords = [(origin[0] - ((origin[0]-check[0])*distance)), (origin[1] - ((origin[1]-check[1])*distance))]
if temp_cords in all_locations:
return False, None #I want to return only 'False' here.
elif temp_cords in (white_locations + black_locations):
if white_turn:
if temp_cords in white_locations:
return True, (distance - 1) #But here, I want to return two values.
It is never a good design to create a function that returns a tuple whose length can vary based on different conditions because the caller would not be able to simply unpack the returning tuple into a fixed number of variables.
In your case, it is better to not return a Boolean but simply return distance - 1
by default, and then either:
return None
when temp_cords in all_locations
is True
, so that caller can just check whether if the returning value is None
to decide what to do with the returning valuetry-except
block to handle the condition when temp_cords in all_locations
is True
.