Почему функция печатает первые две строки перед вызовом? - PullRequest
0 голосов
/ 29 марта 2020

Очень плохо знаком с python, и я учусь определять и вызывать функции.

Когда def function4(x): и затем определяют его вывод как переменную m, он печатает первые две строки функции, прежде чем я даже вызову ее. Затем, когда я вызываю функцию, она отображает только значение return. У меня сложилось впечатление, что что-либо с отступом под def function4(x): не будет выполнено, если только function4(x) не будет специально вызвано?

Пример:

def function4(x):
    print(x)
    print("still in this function")
    return 3*x

m = function4(5)

print("BREAK")
print(m)

Вывод:

    5
    still in this function
    BREAK
    15

    Process finished with exit code 0

Спасибо за ваше время!

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Вы правы, функция не будет выполняться, пока вы ее не вызовете. Вы называете это, однако, прямо здесь:

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
0 голосов
/ 29 марта 2020

Прежде всего, я настоятельно рекомендую вам использовать http://pythontutor.com/javascript.html#mode = edit , если вы хотите знать, как работает ваш код, очень полезно, если вы новичок в Python.

Затем, что касается вашего кода, вы вызываете функцию, когда объявляете переменную m, поэтому по этой причине два оператора print появляются первыми. Возвращаемое значение появится только в том случае, если вы напечатаете функцию, поэтому число 15 появляется в конце концов, потому что вы напечатали его, когда написали print(m).

Надеюсь, это поможет вам, Goobye, тогда и удачи! .

...