#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 перед именем переменной.