Основы Python #6: функции
ฝัง
- เผยแพร่เมื่อ 5 ก.ย. 2019
- Мои курсы:
Boosty:
boosty.to/omolchanov/posts/99...
Patreon:
/ karty-vsekh-41011404
Создание функций в Python. Вызов функций. Передача аргументов. Позиционные, именованные аргументы.
Разница между параметрами и аргументами.
Серия уроков по основам Python
Официально лучшее видео по Python!
И это никто не оспорит
9:22 - в чем разница между параметрами и аргументами функции. Собственно ответ на вопрос.
11:02 - правило сопоставления аргументов функции.
19:00 - return и для чего функции должны вызывать результат своей работы.
21:30 - последовательный вызов методов.
Отличнейшие видео! Всё очень доступно. Спасибо большое, Олег.
Спасибо, Олег курс просто огонь. Кстати и визуальная состовляющая курса (это конечно мало важно, но), на порядок круче предыдущих !!! Добра тебе, мужик и еще раз огромнное спасибо!
"Визуальная составляющая" - это что такое? Надписи эти?
Спасибо за отзыв
@@zaemiel ага))) оформление, картинки, надписи всякие, цвета))
В целом понятнее, чем у других, но прежде всего нужно ознакомить людей на конкретных примерах со всеми используемыми терминами.
Я имею ввиду в каждом видео конкретно тыкать курсором и говорить: это параметр, это аргумент, это функция и т.д. в зависимости от того, какая тема видео.
eto mozno i samomy iskat, v programirovanii vazno umet iskat i pererabativat informaciy. No ti vse delu govorish.
Каждое слово наполнено смыслом, пересматриваю и каждый раз узнаю что-то новое.
так библию читают)..
Объясняете доступно, хорошие и понятные примеры.
Приняла и усилила свои слабые стороны в данной теме) Очень рада, что нашла ваши уроки, лайк.
Отличные уроки!!! планирию просмотреть всё на канале. Главное не забывать ставить лайки :)
Так понятно и подробно объяснять - незаконно! ))
Большое спасибо, Олег! Вы очень хорошо объясняете.
Хорошая работа, Олег.
Официально лучшее видео по Python!
Жаль я не нашла ваши уроки раньше... ! Вы лучший учитель !😍😊 Спасибо 😊
Большое спасибо не как не мог разобраться с функциями респект тебе 🤝🏻🙏🏻
Очень понятно объясняете , спасибо все понял)
Хорошее видео!
Я бы только ещё добавил что на "return" функция останавливается.
хорошее замечание.
Было бы неплохо про *args, **kwargs добавить, как логичное продолжение позиционных и именованных аргументов.
@@Gleb_Pastushenko нет, было бы плохо, мы ещё не проходили кортежи и словари, поэтому рано пока
Спасибо, очень познавательно и понятно.
спасибо, доступно для новичков, хорошо поставлен голос
Вот так теперь понятно , автору респект👍
Класс, очень прозрачно
Топ, спасибо большое
"Плохой, хороший, злой" лучший вестерн всех времён и народов. Советую посмотреть, или пересмотреть. Офигительный фильм.
Джанго освобожденный тоже неплох
Super guide >3
Интересный факт: под любым обучающим видео в комментариях есть фразы "Вы лучший учитель...", "Жаль я не нашёл(нашла) ваши уроки раньше...", "всё очень доступно и понятно...". И всем всё понятно и доступно, а программистов как не было так и нет
Спасибо
Спасибо! Даже кот понял сейчас отобрал ноут сидит работает
ВСЁ ПОНЯТНО!!!!!!!!!!!!!
Подскажите, как писать функцию def наклонным шрифтом?
Как новичку, были непонятны определения "объявление функции", "определение функции" и "инициализация функции". Вроде в видео проскальзывают определения, но разницы я не почувствовала. Переваривала c чатом GPT, выдаю другим новичкам в сжатом и простом виде:
- Объявление функции (через def) - мы пишем её имя и параметры:
def greet(a, b):
- Определение (=создание) функции - мы заполняем тело функции кодом, который она исполнит в случае обращения к ней.
def greet(a, b):
result = a+b
print(result)
- Инициализация функции - создание объекта функции в памяти при запуске строчки с объявленной и определенной функцией, к которому Python обратится позже, если мы вызовем функцию.
все одно и тоже.
Ключевое слова def - это сокращение от define - т.е. "определить", "объявить" функцию. Обычно не говорят про инициализацию функций - это слишком сложно и неудобно произносить как на русском, так и на английском языках.
Говорят о создании, объявлении или определении функций.
А какой-то технической разницы между этими терминами нет.
Страх начинается когда вводят self, __init__, super()
Супер видео, даже мой почти деревянный моск осознал как работают функции), но не получается разобраться с "буфером" между функций, чтоб они меняли значение переменных и возвращали данные обратно!
import keyboard
enabled = 1
a = 1
def off_enabled():
a = (enabled - 1)
print(a)
return a
def on_enabled():
a = (enabled + 1)
print(a)
return a
def check():
if enabled == 1 and a == 2:
print("True")
else:
print("False")
keyboard.add_hotkey('x', off_enabled)
keyboard.add_hotkey('e', on_enabled)
keyboard.add_hotkey('ctrl + 1', check)
keyboard.wait('Ctrl + Q')
10.30 - А почему когда я пишу то же самое, питон ругается: "name 'result' is not defined"?
объясняет как для тупых, т.е. именно то, что мне нужно
У меня вопрос, а вы код пишите по стандарту pep8 ?
То есть greet просто помогает сократить объем кода, хотя по сути это тот же print?
Смотри, greet - это придуманная Олегом функция. Это не существующая функция до тех пор, пока Python её не увидит и не исполнит. Олег сделал так, чтоб greet выполняла функцию принта со строкой Hello world. Он задал этой переменной действие выведения строки. Проще говоря он взял слово greet(приветствие на английском) и назначил его исполнять выведение строки "Привет мир" путём функции print, а так ты можешь сделать так, чтоб greet к примеру исполняла форматирование строки.
Пример:
>>> def greet():
movie = "Leon"
rating = 100
result = f'Movie: {movie}, rating: {rating}'
print (result)
>>> greet()
Movie: Leon, rating: 100
Как-то так.
Всё понятно,кроме return ..вроде она возвращает результат,а вроде игнорируется,когда мы сами вводим(ручками) значение/имя в окошко аргумента функции при вызове!
Можете объяснить другими словами или на каких-то примерах не из программирования, что такое функция return?
Что значит "возвращать" конкретно здесь? Запутался я что-то.
yandex.ru/q/question/funktsiia_return_v_python_f0afd72a/
Представьте, что функция - это Ваш помощник (робот или человек, не важно). Для того, чтобы он действительно помогал, ему нужно сообщить всего 2 вида информации: как нужно делать и с чем эти действия производить. Когда помощник закончит свою работу, он должет передать результат своей работы назад Вам.
Теперь подставляем вместо:
передать в функцию >>> сообщить помощнику,
аргументы >>> информация о том с чем производить действия,
операторы >>> информация о том, какие действия нужно произвести с аргументами,
возвращать >>> оператор (команда) передать назад результат.
Я правда старался попроще =)
@@user-wz8ln2om6i но ведь я могу просто вызвать функцию к примеру : greet(message, name) и получу результат в виде print(result) и это получится без return . Тут наверно смысл применения return в том, что функция выполнив свое действие как бы стирает используемые до этого значения . А return при этом ещё и останавливает функцию. Всё, что будет после return, функция не увидит. И return как раз возвращает предыдущие используемые значение, чтобы их ещё раз дальше использовать . К примеру использовать потом в другой переменной. Я как то так понял этот return ....
Единственное, я пока не могу применить функцию к примеру в начале ролика , где два разных фильма и рейтинг на каждый из этих фильмов тоже разный ..... Я так понял, что при применение этой функции, код должен упростится , меньше строк займет , типа dry получится :)
@@ppg2221 отлично и забористо объясняете, продолжите из любой точки далее, пожалуйста...
@@user-wz8ln2om6i Не совсем понял. Это сарказм или что ? :/ Просто , так как я новичок , то большая вероятность ошибок в моих объяснениях .... . Я там добавил, что return ещё останавливает функцию , все что будет после return, функция как бы не увидит . И то я думаю , что не совсем понял это. Так что сейчас читаю другие источники про функции и return . Так как постоянно чувствую не договоренность в объяснениях кем либо , практически всегда возникают вопросы ....
@@user-wz8ln2om6i ок. Сейчас почитаю . Просто чтобы понять смысл return, наверно нужно для начинающих, привести примеры кода, где без return не обойтись .
Народ, никто не в курсах, как установить переменные в функцию через__kwdefaults__ чтобы можно было потом использовать
def foo():
return a+b
foo.__kwdefaults__ = {"a":1,"b":2}
Но если запустить функцию, он не найдет переменных a,b Как сделать чтоб он их нашел?
Как называется компилятор?
это не компилятор, а редактор кода Atom. Довольно неплохой, и расширений на него довольно много ;-)
Вы говорите, что методы - это функции, которые принадлежат конкретному классу. Но ведь функции, которые мы создаем тоже принадлежат классу "function", следовательно, любая функция - это метод. Можете пояснить?
Здесь нет противоречия. Посмотрите на методы функций.
Я скорее не про противоречие, а про корректность разделения некоторых объектов на функции и методы по признаку принадлежности к классу. На мой взгляд, мы получаем циклическое определение: методы - это функции, а функции - это методы.
функция, которую вы создаете является экземпляром класса. Методы - это атрибуты класса. Если сама по себе функция является атрибутом класса, то она - метод.
@@zaemiel Понял. Спасибо.
5:16 Как он так сделал?
Пам-пам-пам
Вот и коммент для продвижения
в параметрах функции пишим муви,рейтинг. в теле функции вот эту строку резулт = бла бла бла и принт результ не забывает, и потом при вызове функции вставляем аргументы название фильма и рейтинг
Очень понятно. Спасибо.
Некрасиво только то, что переменные раньше функции написал, не поПепски это, а всё остальное прекрасно.👍
Можно КОД из видио
line 3 обьясните значениие символа f ,cпасибо
если вдруг еще не знаете или таки не посмотрели пред-предыдущее видео о строках. f' ' - с версии Пайтона 3.6 дублирует метод .format(), на простом использовании - она удобнее.
def add(movie, rating):
return f'Movie:"{movie}" - Rating:"{rating}"'
print(add('Fight Club',100))
print(add('Alien',150))
print(add('Sully',200))
как то так, едиственное еще не сообразил как не печатать постоянно print(add()), что бы код был dry)))
import math
def log(x,y):
l = math.log(x,y)
return l
print(log(64,2))
еще немного поигравлся с функциями
print( :-) )
хотя тут можно было конечно просто испльзовать модуль math.log(X, [base]) наверное
А что у вас за ОС ?
Ну видно же, что это Linux. Скорее всего Linux Mint
С долей экспериментаторства вышло как-то так, только что-то меня в этом "счастье" смцщает -____-
name = input(print('Enter the name of movie:'))
rating = input(print('Enter the rating of this movie:'))
def mov_rat(name, rating):
result = f'Name: "{name}"
Rating: {rating}.'
return result
a = mov_rat(name, rating)
print(a)
name = input('Enter the name of movie: ')
rating = input('Enter the rating of this movie: ')
def mov_rat(name, rating):
result = f'Name: "{name}."
Rating: {rating}.'
return result
a = mov_rat(name, rating)
print(a)
чел, если пишешь input("...") Не обязательно писать print, у тебя input сразу выводится на экран и спрашивает значение.
Также могу дать прикольную идею, добавь в базу данных некоторые фильмы + их рейтинг(через файлы).
олег! вы живы и здоровы, надеюсь?!
или, лямбы не правильны в прогах?
11:02
ugly же вроде страшный. злой - angry
так перевели
@@zaemiel Я не знал что фильм в оригинале так называется)
не плохо, но контент только для совсем нулевых, хотелось бы увидеть более глубокий разбор функций, и примеров хотелось бы более реальных!
Ты дурачок? Написано же "Основы..." хоти себе дальше, что угодно!
™
а вы преподаватель?
п-т. так правильно?
1 #!/usr/bin/env python3
2
3 #def f(name, number):
4 # print(f'{name} - {number}')
5
6 f = lambda name, number: print(f'{name} - {number}')
7
8 name = input('назови имя: ')
9 number = input('укажи рейтинг: ')
10 f(name, number)
11
12 name = input('назови имя: ')
13 number = input('укажи рейтинг: ')
14 f(name, number)
Вот вообще не понял ...
джаваскрипт понятнее .
Снова окошки и снова нихрена не понятно !
Слишком много непонятных терминов для новичка. Я не понял практически ничего, изза непонятных мне терминов. Я хочу научиться, но в итоге теряюсь среди неизведанного
Для новичков сложновато изъясняешься. И на мой взгляд воды многовато. Больше все таки для тех кто уже знаком с программированием.
Воды там нет вообще. Сложновато? Возможно.
Лично я в программировании ноль, но мне нормально заходит. Пока не вижу ничего не понятного. Много надо запомнить - это да. Но ничего сложного.
@@zaemiel воды нет, не слушай их. Все понятно.Было время давненько, когда я C# взялся изучать по шилдту, так вот там иногда затупы были конечно) пайтон после си шарпа как глоток воздуха, минимум ограничений, максимум свободы) Про функции мне нравится, когда объясняют как параллель с математическими функциями (по сути так и есть).
Сложновато? Ты смотрел видосы у хауди и Георгий дударь? Вот у них сложно.
@@hidekidadzai353 у хауди вообще видосы не о чем.
Вы мошенник, делать это бесплатно, курсы по пойтону от N школы берут за это деньги , а вы просто так)
Ты сам понял что написал?
@@user-dw6yq1nj3i рофл...
я всё за домашку)..
это катит?
#!/usr/bin/python3
a = input('назови картину: ')
b = eval(input('оцени по пятибальной шкале: '))
f = lambda a, b: print(f'Фильм "{a.title()}" - твоя оценка {b}.')
f(a, b)