Частые ошибки начинающих питонистов

Поделиться
HTML-код
  • Опубликовано: 27 сен 2024
  • В видео я показал те ошибки, которые попадаются мне наиболее часто у начинающих. Речь только о ошибках связанных с конструкциями языка, его синтаксисом, которые вижу регулярно.
    PEP-8 www.python.org...
    стандартные функции docs.python.or...
    Именование! Называем вещи своими именами, коллекции во множественном числе, функции -что делают
    Всегда используем ф-строки, НИКОГДА не складываем строки
    не делаем то, что происходит по-умолчанию (str(input))
    используем листкомпс и генэксп только если есть преобразование И/ИЛИ фильтрация
    лучше листкомпс, генэксп, чем map/filter
    используем while True для вечных циклов
    если список не нужен, используем генэксп
    не используем range (len(list)), если нужен индекс то используем enumerate
    используем if collection чтобы проверить что не пустая
    используем встроенные функции
    ловим конкретное исключение, пишем информацию в ветке except
    В видео отражено мое мнение, у вас может быть противоположное
    Присоединяйся к помощи каналу, будет интересно)
    ✔️Бусти boosty.to/pyth...
    ✔️Юмани 410011506612886
    Будь первым везде и всегда, включай уведомления о новых выпусках 🔔
    #Python #PythonRussian #PyCharm

Комментарии • 69

  • @ЧакСобчак-ж8з
    @ЧакСобчак-ж8з Месяц назад

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

  • @George-eb3bw
    @George-eb3bw 2 года назад +17

    00:00 непонятные названия переменных
    10:31 использование контактенации
    13:05 усложнение кода тем, что и так произойдет по умолчанию #пример: (str(input())
    16:25 использование list compr вместо range
    19:15 использование функций map, filter, reduce вместо list compr
    23:25 использования вместо while True других конструкций для вечного цикла
    23:40 использование квадратных скобок для list compr без необходимости
    29:30 использование индексов в цикле for #пример: for i in range(len(list))
    33:30 использование функции len при проверке наличия элементов в коллекции
    35:30 использование флага в цикле без необходимости
    37:50 в блоке except замалчивание ошибки и неиспользование конкретного исключения

  • @Insidepointg
    @Insidepointg Год назад +1

    очень недооцененный контент, автор дает отличные знания и я вообще счастлив что наткнулся на его канал. Так качественно и понятно подавать знания это надо уметь, второй такой человек на мой взгляд это Тимофей Хирьянов

    • @PythonRussian
      @PythonRussian  Год назад +1

      спасибо за отзыв. В ваших силах помочь - порекомендовать друзьям, поделиться в соцсетях

  • @IlyaIlya_lopkop
    @IlyaIlya_lopkop 3 года назад +5

    Супер-бомба, больше видео!

  • @artemtakingpictures
    @artemtakingpictures 3 года назад +3

    спасибо, очень полезно! про f строки у меня не было ясности, какой именно вариант использовать, сейчас понятно что просто пишем все на них

    • @PythonRussian
      @PythonRussian  3 года назад +3

      у меня есть отдельно видео по ф-строкам, посмотри тоже ruclips.net/video/vbZTVaulTdk/видео.html

  • @y18kotov
    @y18kotov Год назад +2

    Спасибо! очень поззнавательно.

  • @ВладимирГригорьевич-у2р

    за 26:21 большое спасибо

  • @ВладимирГригорьевич-у2р

    на форуме решений теперь умничаю, но конечно со ссылкой сюды

  • @polunochNY
    @polunochNY 3 года назад +1

    ушла всё переписывать! :)

  • @api-nsk
    @api-nsk 3 года назад +7

    Нравится манера подачи материала, все последовательно и четко. Но "новичк*" всегда лишним кажется. Весь контент у вас основан на обучении и исправлении действий как для начинающих, так и отучении от устаревшего кодинга профессионала. Если опустить "встречал у новичков" на "встречал", то суть не изменится :-)
    Возможно говорю это не зря, так как являясь подписчиком канала буду буду лучше воспринимать подачу, как и другие.

    • @PythonRussian
      @PythonRussian  3 года назад +2

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

  • @andrewpuchinin8547
    @andrewpuchinin8547 Год назад +2

    Хочется сказать про dict.get(key,None). Не знаю точно, откуда это пошло, но со своей стороны могу предположить, что это пишется как "напоминалка" другому программисту: мол, ты не забудь, что тут еще может быть None. Наверное, люди предполагают, что, если их get() вернет None, то другой человек может долго думать, а откуда этот None взялся. А так типа видно
    Но еще раз, я не анализировал столько много кода новичков, как вы, так что только допускаю

    • @АртёмВолощук-г1в
      @АртёмВолощук-г1в Год назад

      Гуглил что делать когда у меня из mongoDb не вернулся узел, как проверить на none да ещё и что бы не писать if. Так вот какая то из вверхних ссылок подсказала что есть get и именно с none. при чём не пример, при этом ссылки на документацию небыло и упоминания что он не нужен тоже. А так как это работает и не сильно было запарно то я так и написал.

  • @mm_dima
    @mm_dima 10 месяцев назад +1

    Насчёт лист компрехеншнс, делаю вообще так - [*range(10)]

  • @rpuropu
    @rpuropu 3 года назад +2

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

    • @PythonRussian
      @PythonRussian  3 года назад +4

      конечно не реально. Я хоть и автор но тоже советую идти постепенно, помни что многие вещи никак не понять если не прочувствовать написав код. То есть пишем много кода -это единственный способ научиться программировать! Ролики никуда не убегут =)

  • @sinrew2073
    @sinrew2073 3 года назад

    Спасибо

  • @ВладимирГригорьевич-у2р

    и вот этот list(map) постоянно я использую, ну теперь =) использовал =)

  • @МаксимЛапин-ж8о
    @МаксимЛапин-ж8о 3 года назад

    👍

  • @Nikola_Kreslo
    @Nikola_Kreslo 3 года назад

    Not bad, not bad

  • @SemyonKalyakulin
    @SemyonKalyakulin Год назад +1

    Так а в каких все же случаях map и filter будут понятнее?)

    • @PythonRussian
      @PythonRussian  Год назад +1

      честно говоря, когда видео снимал , у меня был какой то хороший пример из практики наготове, но теперь не могу вспомнить контекст. Короче мап-фильтр хороши для тех кто пришел с других ЯП (где они есть), для любителей функциональной парадигмы, а также при работе с reduce и itertools (местами). Вот так еще можно написать кратко
      >>> from operator import add
      >>> map(add, list1, list2)
      Конечно можно сделать генэксп с zip, но уже не так кратко.

    • @SemyonKalyakulin
      @SemyonKalyakulin Год назад

      @@PythonRussian спасибо. Не знал, что map умеет работать с множеством iterable сразу))

  • @ВладимирГригорьевич-у2р

    1 == 1, ыыыы =) прям как я

  • @ИгорьЛатуха
    @ИгорьЛатуха 2 года назад

    В - внезапность

  • @user-gp6vm4jc9p
    @user-gp6vm4jc9p 2 года назад +1

    А у меня в Python 3.10 не получается такого результата, как в вашем примере по правилу №5. У меня print((e ** 2 for e in range(10) if e % 2 == 0)) выводит: , а не [0, 4, 16, 36, 64]. Чтобы получить список нужно [ ] ставить. Это специфика данной версии Илия где-то ошибаюсь?

    • @PythonRussian
      @PythonRussian  2 года назад

      это вы где то ошибаетесь - с круглыми скобками это генэксп, что вам и пишет, если нужен результат, то или действительно формировать список или использовать распаковку в стиле print(*(e ** 2 for e in range(10) if e % 2 == 0)).

    • @user-gp6vm4jc9p
      @user-gp6vm4jc9p 2 года назад

      @@PythonRussian Понятно, спасибо. Я, собственно, так и думал. Просто я повторил запись, что была на экране (там звездочки не было после print: ...(*(e...) , и удивился, что такой вывод у вас дал именно результат, а не констатацию факта, что используется генэксп. :)).
      Еще раз спасибо за ролики! Они действительно очень понятны и, что тоже немаловажно, хорошим русским языком озвучены.

  • @user-sq1fe3ku5m
    @user-sq1fe3ku5m Год назад

    недооцененный канал...а жаль...масса полезного...

  • @ВладимирГригорьевич-у2р

    Как вы относитесь к частому исползованию
    if : break ?
    Почему интересуюсь, потому что преподователь часто говорит что бы максимально избегать этой конструкции, но не объясняет толком почему, мол не понятно читающиму будет. А обратной связи с ним нэма, так как запись там...если честно, я как то подсел на этот break..., и потому задался вопросом у Вас

    • @PythonRussian
      @PythonRussian  3 года назад +1

      приведите пожалуйста пример, не совсем понимаю. Дело в том, что break это не пара для if, это оператор выхода из цикла. Видимо вы какие то условия проверяете в цикле. Если выложите какой-нибудь код на pastebin и ссылку сюда, то смогу сказать точнее. Пока вроде не вижу проблем

    • @ВладимирГригорьевич-у2р
      @ВладимирГригорьевич-у2р 3 года назад +2

      @@PythonRussian да да, в WHILE, что то я тупанул, не уточнив, а код как нибудь потом, а то чот я стесняюсь =)

    • @ВладимирГригорьевич-у2р
      @ВладимирГригорьевич-у2р 3 года назад

      @@PythonRussian pastebin.com/MEvikSWM

    • @PythonRussian
      @PythonRussian  3 года назад +1

      @@ВладимирГригорьевич-у2р я прошу прощения, мне почему то этот комментарий Ютуб не показал, потому не ответил, а сейчас уже не активна ссылка. Сможете еще раз выложить код?

    • @ВладимирГригорьевич-у2р
      @ВладимирГригорьевич-у2р 3 года назад +1

      @@PythonRussian страннол девки пляшут, я же выложил повторно, нет коммента, ютуб походу удалил....

  • @bbty_4086
    @bbty_4086 2 года назад

    1:49 скажите пожалуйста какая клавиша раставила пробелы тут и где можно найти список таких полезностей.

    • @PythonRussian
      @PythonRussian  2 года назад +1

      вот тут посмотри ruclips.net/video/Jmkep5EbQQY/видео.html

  • @МайяГоворова-ы7и
    @МайяГоворова-ы7и Год назад +1

    Ох, из учебников для новичков это все убрали бы)

  • @kan4317
    @kan4317 3 года назад

    Конкотенация быстрее форматирования примерно в 3 раза
    А еще в блоке except лучше писать print(repr(e)) выведет еще и имя исключения

    • @PythonRussian
      @PythonRussian  3 года назад

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

    • @kan4317
      @kan4317 3 года назад

      @@PythonRussian только что попробовал. 10кк итераций с f-строками дают в среднем 2.3 сек
      Конкотенация тех же переменных 1.8 сек

    • @kan4317
      @kan4317 3 года назад

      Тройной прирост у меня получался без определения переменных, в тупую готовые строки

    • @PythonRussian
      @PythonRussian  3 года назад +1

      @@kan4317 у меня питон 3.8, ф-строки на 10 миллионах повторов в среднем формируются за 143 наносекунды, конкатенация переменных 181 наносекунда. Да разница невелика но уж точно не в 3 раза в пользу одного варианта и плюс ф-строки побыстрее, поудобнее и поправильнее.

    • @kan4317
      @kan4317 3 года назад +1

      @@PythonRussian каюсь, поставил в неравные условия, при конкотенации не добавлял пробелы

  • @sagenovalstybes706
    @sagenovalstybes706 3 года назад +1

    Не знаю, откудa Вы это взяли: e**2 for e in range(10) if e%2==0, но на питоне 3.5.3 уже работает range(0,10,2)

    • @PythonRussian
      @PythonRussian  3 года назад

      ну это же просто пример, хотел показать когда и фильтруем и преобразовываем.

  • @user-tt9hx4kh1e
    @user-tt9hx4kh1e 2 дня назад

    Спустя год плотного изучения питона пришел ко всему, что сказано в видео. Больше не понтуюсь колбасой с map и filter. С английским не очень, но под рукой переводчик 24/7, так что проблем с этим нет. Я стал думать о всех, кто будет читать мой код и стараюсь делать его понятным каждому

  • @edgull_tlt
    @edgull_tlt 3 года назад

    Спасибо

  • @barma1309
    @barma1309 2 года назад +2

    спасибо за видосы!! Очень в книгах не хватает бест практикс разделов

  • @mrmedbedb1256
    @mrmedbedb1256 2 года назад +2

    По последнему пункту можно ещё так:
    try:
    int('a')
    except Exception as err:
    print(f'{err}, {err.args}')
    Если не знаешь, какие исключения выпадут, то таким образом их можно зафиксировать.

  • @Laserball74
    @Laserball74 Год назад +2

    молодец! Закинул себе в избранное 👌

  • @ДмитрийЛахменев
    @ДмитрийЛахменев 2 года назад +2

    Отличная подача материала, почерпнул новый фишки для себя. Лайк однозначно!

  • @Pumba053
    @Pumba053 3 года назад +2

    Спасибо, отличный туториал!

  • @lichrave6805
    @lichrave6805 6 месяцев назад

    Многие ошибки прямо сейчас совершаю и учусь дальше их делать(обучают в онлайн школе програмирования). Спасибо за информацию, просто чудом попал на ваш канал.

  • @rpuropu
    @rpuropu 3 года назад

    из С++ это пошло стр(инпут())

    • @PythonRussian
      @PythonRussian  3 года назад +2

      спасибо вам большое! реально просто не понимал почему это все пишут =) и главное когда спрашиваешь -молчат. Я уж думал это что-то из глубин нашей психологии, а оно вон как оказывается.

    • @rpuropu
      @rpuropu 3 года назад

      @@PythonRussian я не имел ввиду синтаксис, я имел ввиду как раз психологию) блоксхема рождённая в С++ она и тут работает)

    • @warpingdrum3712
      @warpingdrum3712 5 месяцев назад

      @@PythonRussian во втором Пытхоне инпут пытался вычислить вводимое выражение. Там еще был рав_инпут , но это не то же самое, что стр(инпут())

    • @PythonRussian
      @PythonRussian  5 месяцев назад

      @@warpingdrum3712 вы кажется правы, но это ж с каких старых туториалов значит код списывают