Вы правы, функция не будет выполняться, пока вы ее не вызовете. Вы называете это, однако, прямо здесь:
m = function4(5)
Таким образом, ваши операторы печати выполняются именно в правильном месте. Вы устанавливаете m
на значение, возвращаемое function4(5)
.
print
ничего не вызывает. Он просто печатает строковое представление того, что вы даете на консоль:
# a simple function to demonstrate
def f(x):
print("I am ", x)
return x
# I have not called f yet
print('Hello! ')
# I have printed the *function* f, but I still have not called it
# note the lack of parentheses
print('Here is a function: ', f)
print('We will call it now!')
# *Now* I am calling the function, as noted by the parentheses
x = f(1)
print('I have returned a value to x: ', x)
, что будет делать следующее:
Hello!
Here is a function: <function f at 0x7fa958141840>
We will call it now!
I am 1
I have returned a value to x: 1