Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 16, 2009 04:18:16

Radc
От:
Зарегистрирован: 2009-11-16
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

function/return

Изучаю питон. недавно занялся функциями. Вопрос, чем отличается в функции “return” от “print” в теле самой функции? как понять определение “return” возвращает значение функции??



Офлайн

#2 Ноя. 16, 2009 08:06:34

Syao
От:
Зарегистрирован: 2009-11-15
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

function/return

>>> def f1(): return 'return from f1'
...
>>> def f2(): print 'print from f2'
...
>>> a, b = None, None
>>> a = f1()
>>> print a
return from f1
>>> b = f2()
print from f2
>>> print b
None



Отредактировано (Ноя. 16, 2009 08:08:11)

Офлайн

#3 Ноя. 16, 2009 08:09:59

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

function/return

принт только выводит какие то данные на экран.
возвращает значение - это как в математике y=F(x); сама функция F(x) после своего выполнения имеет какой-то результат, который записывается в y.
def sum(a, b):
return a + b

функция возвращает значение a + b. То есть результат функции мы можем записать в переменную с = sum(a, b) (ну или можем не записывать а сразу как-то использовать).

Обьяснятель из меня фиговый надеюсь более или менее понятно)



Офлайн

#4 Ноя. 16, 2009 15:19:43

Radc
От:
Зарегистрирован: 2009-11-16
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

function/return

Zubchik спасибо. Теперь яснее. всё нормално, обяснил понятно :)
Syao, в приведенном примере, почему питон выводит две строки, одну print from f2 ,а другую NONE, почему сразу не None?



Отредактировано (Ноя. 16, 2009 15:34:07)

Офлайн

#5 Ноя. 16, 2009 15:44:13

goblin_maks
От:
Зарегистрирован: 2008-12-10
Сообщения: 110
Репутация: +  0  -
Профиль   Отправить e-mail  

function/return

Radc
так понял или не понял?
1.не питон выводит а интерактивная консоль..
2. потому что в превом случае

b = f2()
, а во втором
print b
удачи в начинаниях.. :-)



Офлайн

#6 Ноя. 16, 2009 16:07:42

Syao
От:
Зарегистрирован: 2009-11-15
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

function/return

Просмотри внимательнее.
В теле f1 стоит return, поэтому при вызове f1(), она возвращает то, что записано после return.
В теле f2 return отсутствует, поэтому f2() ничего не возвращает. А если быть точнее, f2() возвращает None:

>>> def f2():
... pass
...
>>> a = 5
>>> print a
5
>>> a = f2()
>>> print a
None
В моем первом посте печатается строка “print from f2”, т.к. при вызове f2() начинает выполнятся тело функции, и когда поток выполнения доходит до инструкции print, строка печатается на экран. При этом, т.к. в теле НЕТ return, функция ничего не возвращает == возвращает None.

Надеюсь не слишком намудрил…:)



Офлайн

#7 Ноя. 16, 2009 20:22:28

Radc
От:
Зарегистрирован: 2009-11-16
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

function/return

Kак я понял “RETURN” оставляет в памяти результат функции, который может быт присвоен другой функции или другой переменной.



Офлайн

#8 Авг. 13, 2015 18:23:33

7slon7
Зарегистрирован: 2014-12-16
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

function/return

почему когда делаю

def start_game():
print("Hello, welcom to new game - dist")
players_num = int(input("How many players will play: "))
# if not players_num.is_digit():
# raise Exception("Incorrect number of players")
players = [Player.names() for i in range(players_num)]


l_players = list(enumerate(players, start=1))
print(l_players)
return players_num, l_players

print(players_num, l_players)
появляется ошибка
TypeError: roll_dice() missing 2 required positional arguments: ‘players_num’ and ‘l_players’
я же сделал return players_num, l_players

Офлайн

#9 Авг. 13, 2015 18:36:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

function/return

7slon7
сделал return players_num, l_players
или так
print(start_game())
или так
a, b = start_game()
print(a, b)



Офлайн

#10 Авг. 13, 2015 18:42:32

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

function/return

представь, что функция - это черный ящик. Ты не знаешь как он работает и что у него внутри. У ящика есть две дырки, в первую ты помещаешь входные данные, из второй дырки вываливается результат.
Пускай входные данные и результат - это стеклянные шары. Суем красный шар, получаем зеленый.

И так, ты суешь шар, из дырки вываливается другой. И что дальше? Ты должен поймать этот шар (присвоить его значение переменной), чтобы его использовать. Или ты можешь сразу направить дырку результата в другой черный ящик. Если ты этого не сделаешь, то шар укатится под диван и ты ничего не сможешь с ним сделать - у тебя его нет.



Отредактировано FishHook (Авг. 13, 2015 18:43:06)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version