У Вас голос и интонация очень похожи на голос Н.Н. Дроздова ) "А теперь мы можем с вами наблюдать функции в их естественной среде обитания. Посмотрите, как они резвятся в консоли" )) очень приятно смотреть и слушать)
Спасибо! То что вы делаете - важно. Ваша речь одна из самых грамотных среди других авторов, рассказывающих про Python. Спасибо за высокое качество материала!
Не смотря на то как легко все подаётся и не замысловато, наиболее ясно! Разжевываете все до мелких частиц и в тоже время не затянуто! Сколько пересмотрел по функциям разного в сети, доходчивее не встречал! У вас хорошо получается, многие по часу объясняют и видно что стараются донести ясно, но так и не получается!
Здравствуйте, наткнулся случайно на Ваш канал. Спасибо за видео, объясняете всё четко и понятно, хотя я уже далеко не первый год изучаю язык и даже планирую в будущем создать свой собственный язык. Термины "фактические параметры" и "формальные параметры" в таком понимании вижу впервые, до этого всё время считал, что формальные параметры (также просто называемые "параметрами" без уточнения) -- это переменные, объявленные в заголовке функции и получающие при вызове функции значения фактических параметров (также называемых "аргументами"), указанных в вызове. В данном понимании "a", "b", "c", и "verbose" все являются формальными параметрами, а соответствующие им значения в вызове функции "get_V" -- фактическими параметрами. На мой взгляд удачнее называть первые три параметра "get_V" обязательными параметрами, а параметр "verbose" -- опциональным (необязательным) параметром, т.к. это более распространённая терминология. Стало интересно узнать, где именно Вы встретили эти термины в том специфическом понимании, что упоминается на 4:42. Заранее спасибо.
@@selfedu_rus Спасибо за ответ) Тоже его смотрю параллельно, мне он нравится как преподаватель (раньше его лекции по алгоритмам на Python 3 чуть ли не запоем смотрел), но почему-то не помню этот момент. У Вас получается преподносить информацию не хуже, сейчас уже несколько занятий подряд посмотрел и не могу остановиться)
@@T0unFl3it Приветствую! А я вот напротив очень рад что кто то назвал параметры не общепринято, а именно так что отразило саму суть и разницу! Для новичка это и нужно! С проф терминологией зная суть разобраться потом не сложно! А вот понять суть по проф терминологии куда сложнее!
@@gulitim6077 Согласен, что терминологию поначалу сложно освоить и приходится объяснять в упрощённой форме, просто мне захотелось вставить свои пять копеек. Здесь ключевой момент в том, чтобы различать параметры в объявлении функции и аргументы в её вызове (формальные vs. фактические параметры), но в разных языках может быть разная терминология, из-за чего у людей возникает путаница/недопонимание при переходе с одного языка на другой.
@@gulitim6077 а чему тут радоваться ?! Тому, что человек, посмотрев это видео, будет употреблять эти термины в значении, отличном от общепринятого, из-за чего сядет в калошу ?
Параметры со значением по-умолчанию, также используются для модернизации функции, которая уже используется в программах. Например модернизация библиотек или модулей. Добавляются параметры со значением по-умолчанию, при этом не надо менять все существующие программы, которые используют данную функцию, они будут работать также без проблем с новой усовершенствованной функцией.
Правильно ли я понял? Дефолтные значения в функции кешируются, поэтому и не создается новый список, потому что адрес объекта сохраняется в атрибуте __defaults__ . Дефолтные значения можно рассматривать как атрибуты класса, а недефолтные значения при инициализации экземпляра класса.
Нет, кэширования никакого нет. Когда на изменяемые значения ведут переменные (ссылки), то через них можно менять объект, не меняя его адреса. В этом суть. При изменении неизменяемых объектов, создается новый объект с новым адресом. Подробнее вам об этом могут рассказать в сообществе ТГ-канала (ссылка под видео).
@@selfedu_rus Про изменяемые и неизменяемые я знаю, я просто неправильно выразился(в кешировании пока не разбираюсь), ведь мы можем получить список ни разу не вызвав функцию, и даже поменять значения списка, если убрать из функции return, и вызвать функцию, значение в lst изменится. В глобальной области lst нет ведь мы его не вернули из функции, но он существует в самой функции. Хотя из теории мы знаем что все локальные атрибуты функции существуют только во время ее выполнения и доступны только внутри тела функции.
@@fahrenheit1863 из какой теории? В питоне все функции являются объектом, который создается в момент инициализации кода, независимо от того, вызвал ты ее или нет объект будет создан интерпретатором
Очень извиняюсь, я еще только изучаю питон, но так и помывает дать свое определение параметрам (аргументам) функций: Формальные параметры - параметры заданные в определении функции, в том числе и именнованные. Фактические параметры - параметры при вызове функции, в том числе и именнованные. По аналогии с другими "древними" языками.
Некорректный вопрос. Переменные могут быть глобальными или локальными, а объекты просто располагаются в памяти. В данном случае на lst будет также ссылаться глобальная переменная l. Да, на один объект может быть множество ссылок )
@@selfedu_rus Да, но после выхода из функции мы не можем обратится к этому списку по имени lst. Но он же существует в памяти) Не знаю, что думать ) Ну то есть после выхода из функции её локальные имена удаляются но при этом список висит где-то.
@@selfedu_rus А почему сборщик мусора не подчищает этот объект после выхода из функции, какая переменная после завершения выполнения функции продолжает ссылаться на него? То есть во время выполнения программы, все объекты, которые были созданы как аргументы по умолчанию вызванных функций висят в памяти до завершения программы? Или вообще ВСЕ объекты которые были переданы в функции в виде параметров, висят в памяти до завершения программы ?
"а", "бэ" и "цэ" - это названия латинских букв. код пишется на английском языке, а не на латинском, и называть буквы нужно на английском - "эй", "би" и "си".
Не посчитайте меня дураком, но ведь когда на 10:35 мы вызываем эту ф-цию первый раз, то после того, как она отработала, локальная переменная lst уничтожается, то есть при повторном вызове она создается вновь и ей присваивается опять значение [ ], указанное по умолчанию. Где у меня ошибка в рассуждении?
замечу, что термин "фактические параметры" изложен НЕПРАВИЛЬНО. формальный параметр - аргумент, указываемый при объявлении или определении функции. фактический параметр - аргумент, передаваемый в функцию при её вызове; 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
У Вас голос и интонация очень похожи на голос Н.Н. Дроздова ) "А теперь мы можем с вами наблюдать функции в их естественной среде обитания. Посмотрите, как они резвятся в консоли" )) очень приятно смотреть и слушать)
Спасибо! То что вы делаете - важно. Ваша речь одна из самых грамотных среди других авторов, рассказывающих про Python. Спасибо за высокое качество материала!
Не смотря на то как легко все подаётся и не замысловато, наиболее ясно! Разжевываете все до мелких частиц и в тоже время не затянуто!
Сколько пересмотрел по функциям разного в сети, доходчивее не встречал!
У вас хорошо получается, многие по часу объясняют и видно что стараются донести ясно, но так и не получается!
Просто безмерно благодарен за уроки и объяснение. Мне тяжело даётся в свои 33 года Python но благодаря Вашим урокам я понимать многое начал!
Как всегда очень классное объяснение. Спасибо !
Спасибо!!!! Офигенный урок!!! 👍
Спасибо за уроки, интересно и полезно
Спасибо за уроки! Очень доступно и понятно. Остался вопрос про "чистку" формальных изменяемых объектов от аргумантов.
Если вы и не гениальный программист, то точно генеральный педагог
учитель-гений!
Спасибо. Понравился пример.
Здравствуйте, наткнулся случайно на Ваш канал. Спасибо за видео, объясняете всё четко и понятно, хотя я уже далеко не первый год изучаю язык и даже планирую в будущем создать свой собственный язык. Термины "фактические параметры" и "формальные параметры" в таком понимании вижу впервые, до этого всё время считал, что формальные параметры (также просто называемые "параметрами" без уточнения) -- это переменные, объявленные в заголовке функции и получающие при вызове функции значения фактических параметров (также называемых "аргументами"), указанных в вызове. В данном понимании "a", "b", "c", и "verbose" все являются формальными параметрами, а соответствующие им значения в вызове функции "get_V" -- фактическими параметрами. На мой взгляд удачнее называть первые три параметра "get_V" обязательными параметрами, а параметр "verbose" -- опциональным (необязательным) параметром, т.к. это более распространённая терминология. Стало интересно узнать, где именно Вы встретили эти термины в том специфическом понимании, что упоминается на 4:42. Заранее спасибо.
У Тимофея Хирьянова :))
@@selfedu_rus Спасибо за ответ) Тоже его смотрю параллельно, мне он нравится как преподаватель (раньше его лекции по алгоритмам на Python 3 чуть ли не запоем смотрел), но почему-то не помню этот момент. У Вас получается преподносить информацию не хуже, сейчас уже несколько занятий подряд посмотрел и не могу остановиться)
@@T0unFl3it Приветствую!
А я вот напротив очень рад что кто то назвал параметры не общепринято, а именно так что отразило саму суть и разницу!
Для новичка это и нужно!
С проф терминологией зная суть разобраться потом не сложно!
А вот понять суть по проф терминологии куда сложнее!
@@gulitim6077 Согласен, что терминологию поначалу сложно освоить и приходится объяснять в упрощённой форме, просто мне захотелось вставить свои пять копеек. Здесь ключевой момент в том, чтобы различать параметры в объявлении функции и аргументы в её вызове (формальные vs. фактические параметры), но в разных языках может быть разная терминология, из-за чего у людей возникает путаница/недопонимание при переходе с одного языка на другой.
@@gulitim6077 а чему тут радоваться ?! Тому, что человек, посмотрев это видео, будет употреблять эти термины в значении, отличном от общепринятого, из-за чего сядет в калошу ?
спасибо большое, очень интерестный урок
Очень точный первый комментарий. 👍
спасибо за труд!
Параметры со значением по-умолчанию, также используются для модернизации функции, которая уже используется в программах. Например модернизация библиотек или модулей. Добавляются параметры со значением по-умолчанию, при этом не надо менять все существующие программы, которые используют данную функцию, они будут работать также без проблем с новой усовершенствованной функцией.
Настоящий Питон Панда)
Нет, it Panda)
спасибо
спасибо!👏
Legend
Сергей, а планируете сертификацию делать для курса на степике?
это делается на платной основе, поэтому пока нет
👍
Правильно ли я понял? Дефолтные значения в функции кешируются, поэтому и не создается новый список, потому что адрес объекта сохраняется в атрибуте __defaults__ . Дефолтные значения можно рассматривать как атрибуты класса, а недефолтные значения при инициализации экземпляра класса.
Нет, кэширования никакого нет. Когда на изменяемые значения ведут переменные (ссылки), то через них можно менять объект, не меняя его адреса. В этом суть. При изменении неизменяемых объектов, создается новый объект с новым адресом. Подробнее вам об этом могут рассказать в сообществе ТГ-канала (ссылка под видео).
@@selfedu_rus Про изменяемые и неизменяемые я знаю, я просто неправильно выразился(в кешировании пока не разбираюсь), ведь мы можем получить список ни разу не вызвав функцию, и даже поменять значения списка, если убрать из функции return, и вызвать функцию, значение в lst изменится. В глобальной области lst нет ведь мы его не вернули из функции, но он существует в самой функции. Хотя из теории мы знаем что все локальные атрибуты функции существуют только во время ее выполнения и доступны только внутри тела функции.
@@fahrenheit1863 из какой теории? В питоне все функции являются объектом, который создается в момент инициализации кода, независимо от того, вызвал ты ее или нет объект будет создан интерпретатором
Здравствуйте, а где можно найти практические задачи?
ссылка под видео
👍👍👍👍👍
Почему в конце делаете проверку так - lst is None, а не так - lst == None
просто так принято в Питоне выполнять сравнение с None
Очень извиняюсь, я еще только изучаю питон, но так и помывает дать свое определение параметрам (аргументам) функций:
Формальные параметры - параметры заданные в определении функции, в том числе и именнованные.
Фактические параметры - параметры при вызове функции, в том числе и именнованные.
По аналогии с другими "древними" языками.
Сергей здравствуйте, выдает ошибку , что нет итерабельного объекта
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
вы указали не верный оператор. вместо in надо is: if lst IS None
А в каком пространстве находится имя lst после выхода из функции?)
Как всегда низкий поклон за ваши труды!
Некорректный вопрос. Переменные могут быть глобальными или локальными, а объекты просто располагаются в памяти. В данном случае на lst будет также ссылаться глобальная переменная l. Да, на один объект может быть множество ссылок )
@@selfedu_rus Да, но после выхода из функции мы не можем обратится к этому списку по имени lst. Но он же существует в памяти) Не знаю, что думать )
Ну то есть после выхода из функции её локальные имена удаляются но при этом список висит где-то.
@@thepseudonym. Да, т.к. на него ведет глобальная ссылка
@@selfedu_rus А почему сборщик мусора не подчищает этот объект после выхода из функции, какая переменная после завершения выполнения функции продолжает ссылаться на него? То есть во время выполнения программы, все объекты, которые были созданы как аргументы по умолчанию вызванных функций висят в памяти до завершения программы? Или вообще ВСЕ объекты которые были переданы в функции в виде параметров, висят в памяти до завершения программы ?
@@skiffsolo9419 вы имеете в виду пустой список? так на него ссылается переменная l, т.к. функция возвращает этот список
как я понимаю формальные параметры нужно записывать в конце. Или я просто не правильно понял?
параметры со значениями по умолчанию всегда прописываются последними; сами значения следует использовать неизменяемые типы данных
@@selfedu_rus благодарю за ответ
Скоро функции параметры аргументы в страшном сне снятся будут ))
Пока не понял логику формального параметра со списком, когда разберусь, отпишусь
Привет, ты со всеми своими знаниями python, можешь спокойно устроиться на работу программиста?
не знаю, я и так им работаю, устраиваться не пробовал ))
@@selfedu_rus Работаешь на ютубе, выкладывая ролики? Или фриланс? Или работа?
"а", "бэ" и "цэ" - это названия латинских букв. код пишется на английском языке, а не на латинском, и называть буквы нужно на английском - "эй", "би" и "си".
Имена переменным придумывает программист какие хочет и на каком хочет языке, как хочет так и называет. Можно так - А, Бэ, Вэ
Не посчитайте меня дураком, но ведь когда на 10:35 мы вызываем эту ф-цию первый раз, то после того, как она отработала, локальная переменная lst уничтожается, то есть при повторном вызове она создается вновь и ей присваивается опять значение [ ], указанное по умолчанию. Где у меня ошибка в рассуждении?
Напишите это в телеграм-канал, вам подробно ответят.
локальная переменная (имя) уничтожается, объект по-умолчанию с которым она связана - не уничтожается
замечу, что термин "фактические параметры" изложен НЕПРАВИЛЬНО.
формальный параметр - аргумент, указываемый при объявлении или определении функции.
фактический параметр - аргумент, передаваемый в функцию при её вызове;
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
спасибо