Я новичок в python и изучаю функции, однако использование функций внутри функций меня смущает. Пример
def print_lyrics():
print( "I am a lumberjackm and I'm ok." )
print( "I sleep all night and I work all day." )
def repeat_lyrics():
print_lyrics()
print_lyrics()
print(repeat_lyrics)
Результатом этого является <function repeat_lyrics at 0x000002F5569D5E50>
, и я понятия не имею, что это значит. Я просто хочу иметь возможность печатать функцию repeat_lyrics
и использовать ее. Может ли кто-нибудь помочь мне? :)
вы должны использовать ()
для выполнения функции - если вы не используете ()
, вы не выполняете ее, но вы можете назначить ее другой переменной - т.е. show = print
и позже вы можете использовать show("Hello World!")
и он выполнит print()
print(repeat_lyrics)
дает вам информацию о значении в переменной repeat_lyrics
- показывает, что у вас есть функция в этой переменной, ее имя repeat_lyrics
и она находится в памяти по адресу 0x000002F5569D5E50
Подсказка: внутри функции repeat_lyrics
, где вы написали print_lyrics()
, почему вы (правильно) не написали только print_lyrics
?
О, я добавил круглые скобки к «print_lyrics» в функции «repeat_lyrics», потому что без них фразы не печатались.
В Python функция — это такой же объект, как и все остальное.
Таким образом, вы можете присвоить функцию переменной, распечатать ее и т. д. Чтобы вызвать функцию (даже из переменной, которой она была назначена), вы передаете ей набор параметров в круглых скобках, это синтаксис вызова функции.
Так:
def hello():
print('hello')
# print a representation of the function object
print(hello)
# assign the function to a variable
bonjour = hello
# call the function (printing "hello")
hello()
# calling the function assigned to the variable (also printing "hello")
bonjour()
Фактически, после bonjour = hello
нет никакой разницы между bonjour
и hello
, они оба просто имена, указывающие на одну и ту же функцию, изначально определенную как hello
.
Итак, где вы написали:
print(repeat_lyrics)
Это правильно, так как функция печатается, но вы, вероятно, хотели ее выполнить:
repeat_lyrics()
Также обратите внимание, что функция, которая не возвращает что-то явно, вернет None
. Так:
print(repeat_lyrics())
Будет выполнять функцию, а затем печатать то, что она возвращает, поэтому она также печатает None
.
Вы можете просто вызвать функцию repeat_lyrics, и вам не нужно использовать print
Это ничего не добавляет к тому, что уже было сказано в комментариях, и на самом деле это не ответ, а просто еще один комментарий.
ты забыл
()
послеrepeat_lyrics
в очередиprint( repeat_lyrics() )