Pull to refresh

Comments 5

Что появилось раньше, функция или класс? =)

Статья не вычитана.

Каждый последующий пример будет опираться на предыдущий, поэтому вам, возможно, захочется читать их последовательно и даже опробовать некоторые из них в сессии интерпретатора Python по ходу дела.

Захотелось последовательно. И вот:

Имя yell по ходу рассказа удалено, но продолжает использоваться, что приводит к ошибке.

И вот в чем загвоздка — whisper не существует вне speak:

Существует. Она была ранее определена вне функции speak:

>>> def whisper(text):
      return text.lower()+'...'

>>> greet(whisper)
hi, i am a python program...
>>> list(map(yell,['hello','hey','hi']))
['HELLO!', 'HEY!', 'HI!']
>>> def speak(text):
      def whisper(t):
          return t.lower()+'...'
      return whisper(text)

>>> speak('Hello, World!')
'hello, world!...'
>>> whisper('Yo')
'yo...'

Может быть стоило использовать разные имена? Потому что дальше тоже есть использование одних и тех же имен для разных нужд, что может привести к путанице в голове у новичка или даже у профессионала, который просто принял работу уволившегося человека. В классах имена — другой разговор, это унификация имен методов: set, get и прочие. В общем же случае в этом нет необходимости и даже вредно.

Ребята, а объясните плс что значит следующее

Конечно, можно продолжить и вызвать возвращенную функцию либо напрямую, либо присвоив ее имя переменной:

speak_func = get_speak_func(0.7)
speak_func('Hello')
'HELLO!'

Ну, то есть, если я правильно понял, здесь показан пример вызова функции через присвоение ее переменной. А как напрямую?..

А напрямую: get_speak_func(0.7)('Hello')

Sign up to leave a comment.