return vs print list
Your first example iterates through each item in x
, printing each item to the screen. Your second example begins iterating through each item in x
, but then it returns the first one, which ends the execution of the function at that point.
Let's take a closer look at the first example:
def list_function(x):
for y in x:
print(y) # Prints y to the screen, then continues on
n = [4, 5, 7]
list_function(n)
Inside the function, the for
loop will begin iterating over x
. First y
is set to 4
, which is printed. Then it's set to 5
and printed, then 7
and printed.
Now take a look at the second example:
def list_function(x):
for y in x:
return y # Returns y, ending the execution of the function
n = [4, 5, 7]
print(list_function(n))
Inside the function, the for
loop will begin iterating over x
. First y
is set to 4
, which is then returned. At this point, execution of the function is halted and the value is returned to the caller. y
is never set to 5
or 7
. The only reason this code still does print something to the screen is because it's called on the line print list_function(n)
, so the return value will be printed. If you just called it with list_function(n)
as in the first example, nothing would be printed to the screen.