What’s below was copy and pasted from another topic asking the same question.
return statement has the property that whenever the computer finds it, when it is running the function, it will quit the function right then and there and not do anything else.
We can read this from the official documentation:
return leaves the current function call with the expression list (or
None ) as return value.
Let’s test this. Below I’m defining a function that starts off immediately with a return statement, then it does some stuff and returns something else.
return pow(n,2) # returns the square of n
n=n+1 # reassigns n+1 to n
return n # returns n (after reassignment)
Let’s try using it:
So we see it’s always returning to us the square of the input. It ignores everything after the first return statement. Let’s now analyze the problem at hand.
Analyzing the Problem
Now that we know how
return statements work, let’s see them in action in the context of this question.
We’ll be analyzing the usage of
saif_is_english is the function
english_check in your code.
- First it enters the function with
Instagram as its input.
- Then it will initiate a “for loop” over
character is assgined the value of the first character in the input string, which means that
character is assigned
if condition is evaluated:
73, which is smaller than
127, the statement
ord(character) > 127 is false and so we are sent to the
else part of the code.
- Once in
else, we hit the statement
return True and the function is exited right here.
So, as you can see, we ended up only ever looking at the first character of
Instagram. We can even use Python Tutor’s Visualizer to see this:
That the function returns a correct result, is merely a consequence of the fact that the first character is “an English character”.
Let’s now see what happens with the usage of
Notice (in the right side of the animation) how we only get to a return statement after iterating over all the characters. Here is the link for this visualization.
I hope this helps.