5
votes

Very new to programming.
Wondering why does this example print all the items in the list, while the second example prints only the first?

def list_function(x):
    for y in x:
        print y 

n = [4, 5, 7]
list_function(n)

def list_function(x):
    for y in x:
        return y 

n = [4, 5, 7]
print list_function(n)
2
Return always terminates execution of a function. - Łukasz Rogalski
I'm going to favorite this question as evidence against all the people who say new programming questions aren't well-received here or instantly get piled on downvotes. This is a well-written, well-presented question on an extremely basic topic without a single downvote. - Two-Bit Alchemist
Cool.. glad it was a good question! Stack Overflow is amazing. - Dude

2 Answers

4
votes

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.

-1
votes

For functions return terminates the execution, therefore nothing will be executed after return.

In your case the first function will print all the items because there is nothing that breaks the process. However in the second function it will return and end the process.