Найти - Пользователи
Полная версия: function/return
Начало » Python для новичков » function/return
1 2
Radc
Изучаю питон. недавно занялся функциями. Вопрос, чем отличается в функции “return” от “print” в теле самой функции? как понять определение “return” возвращает значение функции??
Syao
>>> 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
Zubchick
принт только выводит какие то данные на экран.
возвращает значение - это как в математике y=F(x); сама функция F(x) после своего выполнения имеет какой-то результат, который записывается в y.
def sum(a, b):
return a + b

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

Обьяснятель из меня фиговый надеюсь более или менее понятно)
Radc
Zubchik спасибо. Теперь яснее. всё нормално, обяснил понятно :)
Syao, в приведенном примере, почему питон выводит две строки, одну print from f2 ,а другую NONE, почему сразу не None?
goblin_maks
Radc
так понял или не понял?
1.не питон выводит а интерактивная консоль..
2. потому что в превом случае
b = f2()
, а во втором
print b
удачи в начинаниях.. :-)
Syao
Просмотри внимательнее.
В теле 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.

Надеюсь не слишком намудрил…:)
Radc
Kак я понял “RETURN” оставляет в памяти результат функции, который может быт присвоен другой функции или другой переменной.
7slon7
почему когда делаю
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
FishHook
7slon7
сделал return players_num, l_players
или так
print(start_game())
или так
a, b = start_game()
print(a, b)
FishHook
представь, что функция - это черный ящик. Ты не знаешь как он работает и что у него внутри. У ящика есть две дырки, в первую ты помещаешь входные данные, из второй дырки вываливается результат.
Пускай входные данные и результат - это стеклянные шары. Суем красный шар, получаем зеленый.

И так, ты суешь шар, из дырки вываливается другой. И что дальше? Ты должен поймать этот шар (присвоить его значение переменной), чтобы его использовать. Или ты можешь сразу направить дырку результата в другой черный ящик. Если ты этого не сделаешь, то шар укатится под диван и ты ничего не сможешь с ним сделать - у тебя его нет.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB