Please consider this simple function:
def my_func(x):
if x > 5:
print(x)
else:
quit()
print('this should be printed only if x > 5')
Then if we call this function in a loop:
for i in [2, 3, 4, 5, 6, 7]:
my_func(i)
Expected output:
6
this should be printed only if x > 5
7
this should be printed only if x > 5
But quit
actually disconnects the Kernel.
I know that the following function will work but I do not want to have the second print up there:
def my_func(x):
if x > 5:
print(x)
print('this should be printed only if x > 5')
else:
pass
Lastly, I know that if I put the loop inside the function, I can use continue
or break
but I prefer to keep the function simple and instead put the function call in a loop.
So, what needs to change in the first function to achieve the expected output?
Indeed, quit()
will quit the application. If what you want is to return from the function, return
does exactly that:
def my_func(x):
if x > 5: print(x)
else: return
print('this should be printed only if x > 5')
for i in [2, 3, 4, 5, 6, 7]:
my_func(i)
This has nothing to do with loops. return
simply ends execution of the function and returns control to where the function was called. If that control happens to be in a loop then control is now back in a loop.