Вызов переменных в Python (локальный или глобальный)

#python

#python

Вопрос:

Приведенное ниже работает и дает 8:

 def mypow(a,b):
    c=a**b
    print (c)

mypow(2,3)
 

Но приведенное ниже не:

 def mypow(a,b):
    c=a**b

mypow(2,3)
 

Я понимаю, что в первом случае мы печатаем, но поскольку последнее не выдает сообщение об ошибке (и не дает результата), что на самом деле происходит во втором?

Комментарии:

1. Вы присваиваете значение локальной переменной, а затем ничего с ней не делаете.

2. и тогда метод ничего не возвращает, поэтому неявно возвращает None и … больше ничего не делается.

3. Если вместо назначения c вы вместо этого делаете return a ** b , вы можете распечатать результат, выполнив print(mypow(2,3))

4. Такие вопросы лучше всего анализировать самостоятельно — или вы можете опубликовать их в pythontutor.com и пройдите через код самостоятельно.

5. это не имеет никакого отношения к локальным или глобальным переменным

Ответ №1:

в

 def mypow(a,b):
    c=a**b

mypow(2,3)
 

после выполнения функции; все данные внутри функции уничтожаются. если вы хотите увидеть что-либо на своем экране после выполнения функции; либо используйте print или return .

В конце любой функции у вас есть несколько вариантов.

1- return . возвращает результат. когда вы возвращаете результат, вы получаете его после выполнения функции без ошибок, например: d = func(any_value) , если вы указали возвращаемое значение, func вы получите его и сохраните d . если вы не укажете оператор return в функции, функция вернет None .

2- print . печатайте что угодно. это то, что вы сделали в своей первой функции. в этом случае вы получаете распечатанный материал на своем экране, и вы возвращаете функцию None , поэтому вы не можете удерживать вывод (напечатанное значение) в какой-либо переменной или использовать его где-либо еще.

3- global . присвоить глобальному. когда вам нужна эта опция, вы создаете переменную вне своей функции, скажем my_variale=5 , и в первой строке своей функции вы пишете gloabl my_variable . допустим, функция содержит 5 строк, в строке # 3 вы это сделали my_variable=7 . после того, как функция будет выполнена и уничтожит все значения внутри функции; когда вы проверите my_variable , вы увидите, что она содержит значение 5 .

Ответ №2:

Вы можете заменить print на return для своей функции и получить тот же результат

 def mypow(a,b):
    c=a**b
    return c

mypow(2,3)
 

Переменные, вложенные в функции, рассматриваются как локальные переменные, если вы не добавите global перед именем переменной.