Форум сайта python.su
Изучаю питон. недавно занялся функциями. Вопрос, чем отличается в функции “return” от “print” в теле самой функции? как понять определение “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)
Офлайн
принт только выводит какие то данные на экран.
возвращает значение - это как в математике y=F(x); сама функция F(x) после своего выполнения имеет какой-то результат, который записывается в y.
def sum(a, b):
return a + b
функция возвращает значение a + b. То есть результат функции мы можем записать в переменную с = sum(a, b) (ну или можем не записывать а сразу как-то использовать).
Обьяснятель из меня фиговый надеюсь более или менее понятно)
Офлайн
Zubchik спасибо. Теперь яснее. всё нормално, обяснил понятно :)
Syao, в приведенном примере, почему питон выводит две строки, одну print from f2 ,а другую NONE, почему сразу не None?
Отредактировано (Ноя. 16, 2009 15:34:07)
Офлайн
Radc
так понял или не понял?
1.не питон выводит а интерактивная консоль..
2. потому что в превом случае
b = f2()
print b
Офлайн
Просмотри внимательнее.
В теле f1 стоит return, поэтому при вызове f1(), она возвращает то, что записано после return.
В теле f2 return отсутствует, поэтому f2() ничего не возвращает. А если быть точнее, f2() возвращает None:
>>> def f2():
... pass
...
>>> a = 5
>>> print a
5
>>> a = f2()
>>> print a
None
Офлайн
Kак я понял “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)
Офлайн
7slon7или так
сделал return players_num, l_players
print(start_game())
a, b = start_game() print(a, b)
Офлайн
представь, что функция - это черный ящик. Ты не знаешь как он работает и что у него внутри. У ящика есть две дырки, в первую ты помещаешь входные данные, из второй дырки вываливается результат.
Пускай входные данные и результат - это стеклянные шары. Суем красный шар, получаем зеленый.
И так, ты суешь шар, из дырки вываливается другой. И что дальше? Ты должен поймать этот шар (присвоить его значение переменной), чтобы его использовать. Или ты можешь сразу направить дырку результата в другой черный ящик. Если ты этого не сделаешь, то шар укатится под диван и ты ничего не сможешь с ним сделать - у тебя его нет.
Отредактировано FishHook (Авг. 13, 2015 18:43:06)
Офлайн