#38. Именованные аргументы. Фактические и формальные параметры | Python для начинающих

Поділитися
Вставка
  • Опубліковано 29 лис 2024

КОМЕНТАРІ • 74

  • @Feldspyt
    @Feldspyt Рік тому +6

    У Вас голос и интонация очень похожи на голос Н.Н. Дроздова ) "А теперь мы можем с вами наблюдать функции в их естественной среде обитания. Посмотрите, как они резвятся в консоли" )) очень приятно смотреть и слушать)

  • @mazur_vg
    @mazur_vg 3 роки тому +21

    Спасибо! То что вы делаете - важно. Ваша речь одна из самых грамотных среди других авторов, рассказывающих про Python. Спасибо за высокое качество материала!

  • @gulitim6077
    @gulitim6077 2 роки тому +5

    Не смотря на то как легко все подаётся и не замысловато, наиболее ясно! Разжевываете все до мелких частиц и в тоже время не затянуто!
    Сколько пересмотрел по функциям разного в сети, доходчивее не встречал!
    У вас хорошо получается, многие по часу объясняют и видно что стараются донести ясно, но так и не получается!

  • @guriasoon
    @guriasoon 2 роки тому +4

    Просто безмерно благодарен за уроки и объяснение. Мне тяжело даётся в свои 33 года Python но благодаря Вашим урокам я понимать многое начал!

  • @86Blind
    @86Blind 3 роки тому +8

    Как всегда очень классное объяснение. Спасибо !

  • @77nixter
    @77nixter 2 роки тому +5

    Спасибо!!!! Офигенный урок!!! 👍

  • @elenalevasheva3830
    @elenalevasheva3830 Рік тому +2

    Спасибо за уроки, интересно и полезно

  • @СергейЮров-б6е
    @СергейЮров-б6е 3 роки тому +4

    Если вы и не гениальный программист, то точно генеральный педагог

  • @DzhenanRamchilovich
    @DzhenanRamchilovich 3 роки тому +7

    Спасибо за уроки! Очень доступно и понятно. Остался вопрос про "чистку" формальных изменяемых объектов от аргумантов.

  • @pullya66
    @pullya66 3 роки тому +3

    учитель-гений!

  • @СергейСмирнов-ь8у
    @СергейСмирнов-ь8у 3 роки тому +7

    Очень точный первый комментарий. 👍

  • @andredru4278
    @andredru4278 9 місяців тому +1

    Спасибо. Понравился пример.

  • @T0unFl3it
    @T0unFl3it 3 роки тому +10

    Здравствуйте, наткнулся случайно на Ваш канал. Спасибо за видео, объясняете всё четко и понятно, хотя я уже далеко не первый год изучаю язык и даже планирую в будущем создать свой собственный язык. Термины "фактические параметры" и "формальные параметры" в таком понимании вижу впервые, до этого всё время считал, что формальные параметры (также просто называемые "параметрами" без уточнения) -- это переменные, объявленные в заголовке функции и получающие при вызове функции значения фактических параметров (также называемых "аргументами"), указанных в вызове. В данном понимании "a", "b", "c", и "verbose" все являются формальными параметрами, а соответствующие им значения в вызове функции "get_V" -- фактическими параметрами. На мой взгляд удачнее называть первые три параметра "get_V" обязательными параметрами, а параметр "verbose" -- опциональным (необязательным) параметром, т.к. это более распространённая терминология. Стало интересно узнать, где именно Вы встретили эти термины в том специфическом понимании, что упоминается на 4:42. Заранее спасибо.

    • @selfedu_rus
      @selfedu_rus  3 роки тому +4

      У Тимофея Хирьянова :))

    • @T0unFl3it
      @T0unFl3it 3 роки тому +2

      @@selfedu_rus Спасибо за ответ) Тоже его смотрю параллельно, мне он нравится как преподаватель (раньше его лекции по алгоритмам на Python 3 чуть ли не запоем смотрел), но почему-то не помню этот момент. У Вас получается преподносить информацию не хуже, сейчас уже несколько занятий подряд посмотрел и не могу остановиться)

    • @gulitim6077
      @gulitim6077 2 роки тому +1

      @@T0unFl3it Приветствую!
      А я вот напротив очень рад что кто то назвал параметры не общепринято, а именно так что отразило саму суть и разницу!
      Для новичка это и нужно!
      С проф терминологией зная суть разобраться потом не сложно!
      А вот понять суть по проф терминологии куда сложнее!

    • @T0unFl3it
      @T0unFl3it 2 роки тому +2

      @@gulitim6077 Согласен, что терминологию поначалу сложно освоить и приходится объяснять в упрощённой форме, просто мне захотелось вставить свои пять копеек. Здесь ключевой момент в том, чтобы различать параметры в объявлении функции и аргументы в её вызове (формальные vs. фактические параметры), но в разных языках может быть разная терминология, из-за чего у людей возникает путаница/недопонимание при переходе с одного языка на другой.

    • @ВадимСухотин-ю5д
      @ВадимСухотин-ю5д 2 роки тому

      @@gulitim6077 а чему тут радоваться ?! Тому, что человек, посмотрев это видео, будет употреблять эти термины в значении, отличном от общепринятого, из-за чего сядет в калошу ?

  • @eugenedukatta9355
    @eugenedukatta9355 Рік тому +1

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

  • @СарматПересветов

    спасибо большое, очень интерестный урок

  • @ivanlino3747
    @ivanlino3747 3 роки тому +2

    спасибо за труд!

  • @gulitim6077
    @gulitim6077 2 роки тому +3

    Настоящий Питон Панда)
    Нет, it Panda)

  • @likeclockwork9600
    @likeclockwork9600 3 роки тому +3

    Сергей, а планируете сертификацию делать для курса на степике?

    • @selfedu_rus
      @selfedu_rus  3 роки тому

      это делается на платной основе, поэтому пока нет

  • @illiukhin
    @illiukhin 3 роки тому +3

    спасибо

  • @fahrenheit1863
    @fahrenheit1863 Рік тому +1

    Правильно ли я понял? Дефолтные значения в функции кешируются, поэтому и не создается новый список, потому что адрес объекта сохраняется в атрибуте __defaults__ . Дефолтные значения можно рассматривать как атрибуты класса, а недефолтные значения при инициализации экземпляра класса.

    • @selfedu_rus
      @selfedu_rus  Рік тому +1

      Нет, кэширования никакого нет. Когда на изменяемые значения ведут переменные (ссылки), то через них можно менять объект, не меняя его адреса. В этом суть. При изменении неизменяемых объектов, создается новый объект с новым адресом. Подробнее вам об этом могут рассказать в сообществе ТГ-канала (ссылка под видео).

    • @fahrenheit1863
      @fahrenheit1863 Рік тому

      @@selfedu_rus Про изменяемые и неизменяемые я знаю, я просто неправильно выразился(в кешировании пока не разбираюсь), ведь мы можем получить список ни разу не вызвав функцию, и даже поменять значения списка, если убрать из функции return, и вызвать функцию, значение в lst изменится. В глобальной области lst нет ведь мы его не вернули из функции, но он существует в самой функции. Хотя из теории мы знаем что все локальные атрибуты функции существуют только во время ее выполнения и доступны только внутри тела функции.

    • @Putu_pererenan
      @Putu_pererenan 2 місяці тому

      @@fahrenheit1863 из какой теории? В питоне все функции являются объектом, который создается в момент инициализации кода, независимо от того, вызвал ты ее или нет объект будет создан интерпретатором

  • @ayqikz
    @ayqikz Рік тому +2

    Legend

  • @jamjam3337
    @jamjam3337 Рік тому +1

    спасибо!👏

  • @ibrahimoglu
    @ibrahimoglu 3 роки тому +4

    👍

  • @Onix_ryan
    @Onix_ryan Рік тому +1

    Здравствуйте, а где можно найти практические задачи?

  • @eugenedukatta9355
    @eugenedukatta9355 Рік тому +1

    Почему в конце делаете проверку так - lst is None, а не так - lst == None

    • @selfedu_rus
      @selfedu_rus  Рік тому

      просто так принято в Питоне выполнять сравнение с None

  • @a_n_t_o_n_09
    @a_n_t_o_n_09 2 роки тому +1

    Сергей здравствуйте, выдает ошибку , что нет итерабельного объекта
    def add_value(value, lst=None):
    if lst in None:
    lst = []


    lst.append(value)
    return lst
    l = add_value(1)
    l = add_value(2)
    print(l)
    if lst in None:
    TypeError: argument of type 'NoneType' is not iterable

    • @gore_ot_uma166
      @gore_ot_uma166 2 роки тому +1

      вы указали не верный оператор. вместо in надо is: if lst IS None

  • @impellergimpeller5133
    @impellergimpeller5133 3 роки тому +2

    👍👍👍👍👍

  • @vltoropov677
    @vltoropov677 2 роки тому

    Очень извиняюсь, я еще только изучаю питон, но так и помывает дать свое определение параметрам (аргументам) функций:
    Формальные параметры - параметры заданные в определении функции, в том числе и именнованные.
    Фактические параметры - параметры при вызове функции, в том числе и именнованные.
    По аналогии с другими "древними" языками.

  • @kalivann
    @kalivann 11 місяців тому +1

    как я понимаю формальные параметры нужно записывать в конце. Или я просто не правильно понял?

    • @selfedu_rus
      @selfedu_rus  11 місяців тому +1

      параметры со значениями по умолчанию всегда прописываются последними; сами значения следует использовать неизменяемые типы данных

    • @kalivann
      @kalivann 11 місяців тому

      @@selfedu_rus благодарю за ответ

  • @thepseudonym.
    @thepseudonym. 3 роки тому +2

    А в каком пространстве находится имя lst после выхода из функции?)
    Как всегда низкий поклон за ваши труды!

    • @selfedu_rus
      @selfedu_rus  3 роки тому +2

      Некорректный вопрос. Переменные могут быть глобальными или локальными, а объекты просто располагаются в памяти. В данном случае на lst будет также ссылаться глобальная переменная l. Да, на один объект может быть множество ссылок )

    • @thepseudonym.
      @thepseudonym. 3 роки тому

      @@selfedu_rus Да, но после выхода из функции мы не можем обратится к этому списку по имени lst. Но он же существует в памяти) Не знаю, что думать )
      Ну то есть после выхода из функции её локальные имена удаляются но при этом список висит где-то.

    • @selfedu_rus
      @selfedu_rus  3 роки тому +1

      @@thepseudonym. Да, т.к. на него ведет глобальная ссылка

    • @skiffsolo9419
      @skiffsolo9419 2 роки тому

      @@selfedu_rus А почему сборщик мусора не подчищает этот объект после выхода из функции, какая переменная после завершения выполнения функции продолжает ссылаться на него? То есть во время выполнения программы, все объекты, которые были созданы как аргументы по умолчанию вызванных функций висят в памяти до завершения программы? Или вообще ВСЕ объекты которые были переданы в функции в виде параметров, висят в памяти до завершения программы ?

    • @selfedu_rus
      @selfedu_rus  2 роки тому

      @@skiffsolo9419 вы имеете в виду пустой список? так на него ссылается переменная l, т.к. функция возвращает этот список

  • @ИванПриписнов
    @ИванПриписнов 2 роки тому

    Скоро функции параметры аргументы в страшном сне снятся будут ))

  • @vb52ru
    @vb52ru 3 роки тому +1

    Пока не понял логику формального параметра со списком, когда разберусь, отпишусь

  • @Alex-qp7fm
    @Alex-qp7fm 3 роки тому +2

    Привет, ты со всеми своими знаниями python, можешь спокойно устроиться на работу программиста?

    • @selfedu_rus
      @selfedu_rus  3 роки тому +6

      не знаю, я и так им работаю, устраиваться не пробовал ))

    • @Alex-qp7fm
      @Alex-qp7fm 3 роки тому

      @@selfedu_rus Работаешь на ютубе, выкладывая ролики? Или фриланс? Или работа?

  • @KonstantinSafronov-v4m
    @KonstantinSafronov-v4m Рік тому

    "а", "бэ" и "цэ" - это названия латинских букв. код пишется на английском языке, а не на латинском, и называть буквы нужно на английском - "эй", "би" и "си".

    • @eugenedukatta9355
      @eugenedukatta9355 Рік тому

      Имена переменным придумывает программист какие хочет и на каком хочет языке, как хочет так и называет. Можно так - А, Бэ, Вэ

  • @northern_man_
    @northern_man_ Рік тому

    Не посчитайте меня дураком, но ведь когда на 10:35 мы вызываем эту ф-цию первый раз, то после того, как она отработала, локальная переменная lst уничтожается, то есть при повторном вызове она создается вновь и ей присваивается опять значение [ ], указанное по умолчанию. Где у меня ошибка в рассуждении?

    • @selfedu_rus
      @selfedu_rus  Рік тому

      Напишите это в телеграм-канал, вам подробно ответят.

    • @eugenedukatta9355
      @eugenedukatta9355 Рік тому

      локальная переменная (имя) уничтожается, объект по-умолчанию с которым она связана - не уничтожается

  • @KonstantinSafronov-v4m
    @KonstantinSafronov-v4m Рік тому

    замечу, что термин "фактические параметры" изложен НЕПРАВИЛЬНО.
    формальный параметр - аргумент, указываемый при объявлении или определении функции.
    фактический параметр - аргумент, передаваемый в функцию при её вызове;
    ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)#%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B8_%D1%84%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B

  • @gayratsaidakhmedov5451
    @gayratsaidakhmedov5451 11 місяців тому +1

    спасибо