ТОП 5 Ошибок в написании функций Python

  Рет қаралды 77,865

ZProger [ IT ]

ZProger [ IT ]

Жыл бұрын

⭐ Курс ООП и Приват канал: www.zproger-school.com/?...
⭐ Телеграм канал: t.me/+zS0X6UO25MI4ZGYx
В данном видео рассмотрим самые популярные ошибки при написании функций в Python. Если вы часто допускаете эти ошибки, то это может повлиять на структуру вашего кода, на легкость его поддержки и также может забрать у вас много времени при попытке что-то исправить.
Исправление этих ошибок в вашем Python коде, поможет в разы улучшить ваши проекты и легкость их поддержки.
📁 Github: github.com/Zproger
📁 Все плейлисты с уроками: bit.ly/39GaY89
📁 Связаться со мной: zproger777@gmail.com
📁 Все плейлисты с уроками: bit.ly/39GaY89
📁 Поддержать криптовалютой: github.com/Zproger/donate

Пікірлер: 159
@MEZHGANO
@MEZHGANO Жыл бұрын
Все по делу, спасибо. Если вдруг кто не в курсе, то комментарий к функции лучше писать в тройных кавычках в теле функции, тогда он появится в подсказке при наведении курсора на функцию
@zproger
@zproger Жыл бұрын
Спасибо за дополнение к видео, это хороший совет
@dmitrykoklyagin2916
@dmitrykoklyagin2916 Жыл бұрын
1. Думаем над именами функций и классов. Код пишется один раз, а читается постоянно. 2. Type annotations для функций и внимательно отслеживаем несоответствия по типам данных на уровне проекта. Очень много херни позволяет отловить с минимальной задержкой. 3. Докстринги, в которых описываемых всё, что функция принципиально делает. Комментарии - только там, где надо пояснить какое-то неочевидное решение, из-за, например, изврата бизнес-логики. 4. from xxx import * --- должен вообще не пройти код ревью коллег и не попасть в мастер. 5. В числе ревьюеров должен быть маньяк идеи чистого кода, нам повезло, у нас их два.
@zproger
@zproger Жыл бұрын
Маньяки чистого кода это хорошо
@dann1kid
@dann1kid Жыл бұрын
Со всеми пунктами согласен
@irwe3514
@irwe3514 Жыл бұрын
Очень интересно и информативно, жду следущих видео)
@zproger
@zproger Жыл бұрын
Благодарю :)
@MaxusR
@MaxusR Жыл бұрын
Насчёт неочевидных имён функций согласен на все 200%, а вот насчёт требования к уникальности названий категорически против. Кто сделал import *, тот сам дурак. А если в двух разных модулях функции выполняют логически одно и то же, но по-разному, то почему-бы и не назвать их идентично.
@zener_blitz
@zener_blitz Жыл бұрын
Так речь идёт не про разные модули, в разных модулях эти функции не будут пересекаться.
@aliakseybaradulkin2443
@aliakseybaradulkin2443 Жыл бұрын
Я бы добавил еще про ОПП Мы должны использовать классы осознанно, не просто для того что б имена функций были более краткими и понятными, а с какой то целью например хранение состояния (это было сказано, но как дополнительный бонус) или возможности полиморфизма и прочие плюсы классов просто использовать функции что б сократить имена классов и тд - это не правильно
@SashaGun_GD
@SashaGun_GD Жыл бұрын
import * нужен только в tkinter
@riventarakoss1546
@riventarakoss1546 Жыл бұрын
Не понимаю, почему ролик выходит то для новичков, то для тех, кто уже смешарик. Это БАЗА
@zproger
@zproger Жыл бұрын
Бывает =)
@bspumo3830
@bspumo3830 Жыл бұрын
Лайк за смешариков 👍🏿
@savtis2606
@savtis2606 Жыл бұрын
Базированный гигачад
@killuar0294
@killuar0294 Жыл бұрын
Сколько часов в шарараме?
@frontend_developer_anti_vata
@frontend_developer_anti_vata 9 ай бұрын
​@@killuar02948 лет умножить на 8760 часов = 70080
@user-ty1bc5zo3z
@user-ty1bc5zo3z Жыл бұрын
Спасибо!Информативно и полезно!
@zproger
@zproger Жыл бұрын
Благодарю
@SYPERSTAR1986
@SYPERSTAR1986 Жыл бұрын
Спасибо большое дружище, очень крутой и познавательный видос!!!
@zproger
@zproger Жыл бұрын
Спасибо =)
@user-ow5iv1wo7j
@user-ow5iv1wo7j Жыл бұрын
Спасибо за информативный и понятный контент)
@zproger
@zproger Жыл бұрын
Рад что понравилось
@ThembaKai
@ThembaKai 2 ай бұрын
несколько курсов на степике прошел по питону, видел как люди писали в функциях аннотацию, но не понимал для чего конкретно это нужно, теперь разобрался; начал смотреть твой канал и ты мне очень помогаешь в понимании этого языка, спасибо тебе, твой канал один из лучших по питону!
@MagMigo
@MagMigo Жыл бұрын
Могу про лямбду добавить: есть вот люди, которые постоянно везде суют лямбду, т.е. x = lambda y: y ** 2 print(x(5)) Сделайте вид, что тут что-то сложное. И вот, часто замечал, что многие любят делать огромные строки, где тупа одна лямбда как какая-то функция Это нарушение PEP8 про длину строки и ещё одно нарушение, что лямбда используется неправильно (даже в пепе есть (!!)) Правильно лямбда используется в таких моментах: print(sorted(["c", "b", "a"], key=lambda x: x[0].lower())) # prints: ['a', 'b', 'c'] Это просто пример, но думаю суть ясна. Вооооооооооооооооот, да
@eugenebybin6403
@eugenebybin6403 Жыл бұрын
Спасибо за видео, структурированно и понятно
@zproger
@zproger Жыл бұрын
Рад что понравилось
@otetz77
@otetz77 Жыл бұрын
Импорт через звездочку просто надо себе запретить. Оооочень много проблем снимает. А в удобстве почти не теряешь с современными редакторами.
@zproger
@zproger Жыл бұрын
Согласен
@romanbush5164
@romanbush5164 Жыл бұрын
Молодец объяснил чистый код и принципы солид), а про scores это жесть, поэтому лучше писать в ооп стиле
@SolistTV
@SolistTV Жыл бұрын
6:28 лишним плюсом реализации методов класса вместо функций будет полиморфизм, который станет, доступным для методов. Об уникальности методов нужно будет думать только в рамках класса, а не всей системы. К тому же, созданный класс задаст контекст использования методов, будет проще контролировать инпут/аутпут.
@vasiliynet3425
@vasiliynet3425 Жыл бұрын
В примере про скорс, с добавлением числа в массиву, меняется аргумент, чего в чистых функциях быть не должно, поэтому и возникло затруднение при вызовах. Должен был создаваться новый массив и возвращать результат. В JS это понимание очень часто играет.
@robertobokarev439
@robertobokarev439 Жыл бұрын
3 совета очевидны (овер или недокоммент, нет аннотаций, плохое название функции). Как предложение, можно добавить объяснение поч плохо сохранять лямбды в переменные, использовать простые функции в абстракциях (для новичков может быть непонятно), почему перегрузка функций typing.overload с одним и тем же параметром с разным названием вне .pyi файла вообще нежелательно (Моё мнение).
@owa_creator
@owa_creator 4 ай бұрын
Смотрел это видео и одновременно делал оператор "в" в своем языке :P
@user-se7gh5xh7p
@user-se7gh5xh7p Жыл бұрын
Да, интересно тут)) Если можно голосовать за тему для выпуска, то голосую за борьбу с круговыми импортами)
@zproger
@zproger Жыл бұрын
Хорошая идея, спасибо
@nickolayfetlistov4416
@nickolayfetlistov4416 Жыл бұрын
За видео спасибо, уже так сказать опытная котлета но на одном из первых собесов с ссылочками на листочки поплыл) Полезно однако)
@zproger
@zproger Жыл бұрын
Рад что помогло =))
@stargrapefruit
@stargrapefruit Жыл бұрын
Что за приложение для кода?
@shinkun4614
@shinkun4614 Жыл бұрын
Хороший видосик)
@zproger
@zproger Жыл бұрын
=)
@nikolaymatveychuk6145
@nikolaymatveychuk6145 Жыл бұрын
Первая рекомендация про именование хорошая, хотя не нова (тут следует сослаться на того же Макконнелла с его книгой "Совершенный код"). Остальное - nah... Насчёт методов, которые предлагается в класс обернуть - там сразу value и values лишние, потому что не добавляют ничего к пониманию сути функций (понятное дело что речь про значения, а не неопределённости или незначимости). Да и вообще лучше указывать что на что делится, потому метод должен зваться так, чтобы код получился вроде с = a.divideBy(b), иначе будет не понятно то ли a на b делится, то ли наоборот. Да и попытка создать класс на пустом месте - плохая идея, иначе следовало бы отказаться от выражений вида a*b, a + b, a % b и так далее и всё следовало бы их писать как a.mod(b), a.multiplyBy(b), a.divideBy(b) и т.д.. Раз мы все так не делаем, то следует предположить, что идея плохая и классы придуманы для другого (а такое "нововведение" лишь без причины усложнит код). Насчёт передачи по ссылке параметра по-умолчанию - я бы это охарактеризовал как баг питона. Согласен, работая с питоном об этом следует знать и в этом плане респект автору (лично я на питоне не пишу, потому для меня это было открытием). Но это значит, что в питоне не скалярные параметры с заданным значением по-умолчанию использовать нельзя, потому что это по определению функция грязная, которая обязательно породит непредсказуемое поведение. Потому часть про "если вы знаете как, то можете это использовать" из разряда вредных советов.
@user-ul5ic2rw5h
@user-ul5ic2rw5h Жыл бұрын
3:46 Развёрнутые комментарии лучше всего делать внутри функции для объяснения смысла алгоритма и всяких не очевидных "подводных" особенностей. А короткие комментарии должны быть превращены в название функции, в которую войдёт комментируемый кусок кода.
@user-xl7hd4io9t
@user-xl7hd4io9t Жыл бұрын
Можешь напомнить плз, какой дистрибут линукса ты юзаешь???
@zproger
@zproger Жыл бұрын
ZorinOS
@PRONCHENKO
@PRONCHENKO Жыл бұрын
Привет, а каким дистрибутивом ты пользуешься?
@MagMigo
@MagMigo Жыл бұрын
Вроде как это манжаро какая-то
@zproger
@zproger Жыл бұрын
ZorinOS
@PRONCHENKO
@PRONCHENKO Жыл бұрын
@@zproger Спасибо
@Novice2213
@Novice2213 Жыл бұрын
append_score(score, scores=[]) - имба вообще, не знал о таком, спасибо!
@andreypronko1859
@andreypronko1859 Ай бұрын
Всё правильно. Если даже тебе нет дела до тех, кто согнал тебя с работы, и теперь поддерживает твой код, позаботься о себе драгоценном. Понять собственный код, который ты писал год назад, особенно в крупном проекте, на пару сотен питон-файлов, очень не просто. Надо осмысленно называть модули, функции, классы, и даже соорудить простейший сервер с документацией и поиском по ней.
@demg7738
@demg7738 Жыл бұрын
Правильные советы, только возвращаемый тип в первом примере лучше сделать list[int].
@nartoomeon9378
@nartoomeon9378 10 ай бұрын
Из последнего коротко: меньше кода, больше функционала.
@user-nu3ot7td1j
@user-nu3ot7td1j 9 ай бұрын
Видео очень хорошее, но можно было бы сюда сразу теории докинуть, так как в видео упоминается, и про Single responsibility principle , и про DRY, и про KISS
@scrooge6603
@scrooge6603 Жыл бұрын
Я тут в общем, пишу функцию и тут ты! Спасибо, обязательно посмотрю позже! Я проверяю инстансами, и зачастую люблю писать в одну строку так: ('True' if mesg == 'hi' else 'False'), [i for i in mesg....]
@MagMigo
@MagMigo Жыл бұрын
Не пиши буль не булем True/False должны быть без "", а ещё у тебя здесь проблемы c алгебра-логикой и можно сделать просто return mesg == "hi"
@scrooge6603
@scrooge6603 Жыл бұрын
@@MagMigo 1.С булами затупил немного когда писал это, а так, я делаю реальными булами без " " 2.Нет, у меня нет проблем с логикой, я не сказал ещё если в друг мне нужно по листу пройтись или написть что-то если Тру или Фолз Примерно так, выглядит моя функция: def hello(text): if not isinstance(text, list): raise ... return [i for i in text if i == 'Hey']
@MagMigo
@MagMigo Жыл бұрын
@@scrooge6603 Уже в этом случае нет проблем, но если ты будешь делать так def hello(text: str) -> bool: # Допустим, тебе будет нужна функция, где тебе надо чтоб возвращался только буль return isinstance(str, text) Под алгебра-логикой я это имел ввиду.
@QwDragon
@QwDragon Жыл бұрын
Args мне кажется довольно полезной штукой. По крайней мере в js используется не так уж редко.
@dath
@dath Жыл бұрын
Это же чистый код в вольном пересказе, хосподе, это же такая база
@zproger
@zproger Жыл бұрын
ещё бы =)
@thegate8985
@thegate8985 Жыл бұрын
Привет! Спасибо за ролик! Очень не хватает разбиение ролика на таймкоды :(
@aleksversus
@aleksversus Жыл бұрын
def - создаёт объект класса function, которому назначаются поля. Если мы не переопределяем эти поля при вызове функции, естественно мы работаем со значениями, которые уже определены для полей. За счёт этого, как я понимаю, работают всякие функции-генераторы. Да, это поведение не вполне очевидно, если мыслить в рамках процедурного программирования, к сожалению.
@amadeus1300
@amadeus1300 Жыл бұрын
спс за видосян
@zproger
@zproger Жыл бұрын
Рад стараться =)
@DERJNDZE
@DERJNDZE Жыл бұрын
Вместо, а даже лучше вместе с комментариями хорошо использовать докстринги. Если не хочется лезть в модуль и вычитывать там функционал функции, просто пишешь хельп(), и он у тебя на ладони. Тоесть в докстринги пишем комментарии по использованию, в обычные коменты - по реализации
@zproger
@zproger Жыл бұрын
Да, вот только кликнуть по функции быстрее, чем вызывать help, но docstring крутая штука
@user-pg8ry1tm3t
@user-pg8ry1tm3t 5 ай бұрын
Хорошая практика имхо - не писать комменты на каждой строке функции, а документировать ее той же док строкой…
@blanjel6921
@blanjel6921 7 ай бұрын
Найс, выучил Python, теперь иди учи английский, потому что циклы циклами, а названия за тебя никто не придумает :D Спасибо за полезный материал! Но не проще ли просто писать коммент к функции и не париться с придумываем названий, особенно когда у тебя в одной проге 100500 этих функций и уже фантазия закончилась :D
@user-gu2en4ml3u
@user-gu2en4ml3u Жыл бұрын
Скажите, пожалуйста. Почему функция называется get_array, если возвращает не array, а list?
@MagMigo
@MagMigo Жыл бұрын
Список в питон практически тоже самое, что и массив Да, всё же разное, но имеет место быть
@nakidai
@nakidai Жыл бұрын
@@MagMigo Это не практически тоже самое, у массивов есть свой тип, и все его элементы одного типа. А в списках типа нет, и элементы могут быть любые.
@zproger
@zproger Жыл бұрын
Ну это ведь пример) а вообще списки и массивы отличаются между собой, и об этом есть след.видео: kzfaq.info/get/bejne/lbxkepdyntzJmH0.html
@andyzmn3391
@andyzmn3391 Жыл бұрын
bad practice делать импорт через *
@zproger
@zproger Жыл бұрын
Согласен
@nouaksomtac6782
@nouaksomtac6782 Ай бұрын
*args и **kwargs исползуетса доволна часто в декораторах и прий написаний библиотекий
@dowlso
@dowlso Жыл бұрын
3:12 Вы хоть сами поняли, что написали, может быть вы имели from lib import * : в таком случае все функции и классы запишутся в основной модуль А если import lib : то к функциям и классам придётся обращаться через имя библитеки и уникальность уже не обязательна
@zproger
@zproger Жыл бұрын
действительно, даже и не заметил как написал это
@user-fs6vk7pe8l
@user-fs6vk7pe8l Жыл бұрын
Ну ошибся человек, с кем не бывает
@dann1kid
@dann1kid Жыл бұрын
про датаклассы расскажи. Слотс, фриз там вот это вот всё
@non5309
@non5309 Жыл бұрын
Что-то все в кучу и солид принципы и нейминг и аннотация и изменяемые типы.
@zproger
@zproger Жыл бұрын
Это да, но думаю лишним не будет
@QwDragon
@QwDragon Жыл бұрын
Аннотации мне тоже показались неожиданными в этом видео, а остальное - всё по теме.
@artembagachkov933
@artembagachkov933 Жыл бұрын
Вау, 30к, супер!
@zproger
@zproger Жыл бұрын
=)
@klausfernius5115
@klausfernius5115 Жыл бұрын
Крутое и полезное видео, но про память все равно не понял
@NearBirdsamp
@NearBirdsamp Жыл бұрын
Раз 10 за 3-4 года использовать *args и **kwargs - смешно Самый банальный и частоиспользуемый пример - wrapper'ы
@SergeyKozhukhov
@SergeyKozhukhov Жыл бұрын
Ну, первый совет - это очень круто, но чревато циклическим импортом. Я ставлю описание типа в doc string.
@MagMigo
@MagMigo Жыл бұрын
Чтоб решалась проблема с цикличным импортом и существует константа typing.TYPE_CHECKING
@shrimp4567
@shrimp4567 Жыл бұрын
Почти все про очевидные вещи, да и не все они фатальны
@user-fc3gh1rb7w
@user-fc3gh1rb7w Жыл бұрын
мдеее. Товарищи, пишите на шарпе. лучше шарпа ничего нет и никогда не будет!
@zproger
@zproger Жыл бұрын
у каждого свой идеальный язык =)
@dx8026
@dx8026 Жыл бұрын
1. Документируем только функции или методы класса 2. Пишем чистый код Вот и всё))
@span4ev
@span4ev Жыл бұрын
import lib import * хм... Может всё таки from lib import *?
@zproger
@zproger Жыл бұрын
да, там ошибка которую я неосознанно совершил
@andrewbobrow3815
@andrewbobrow3815 9 ай бұрын
Я наверно спрошу какую-то глупость... Я понял, что функция append_score где-то там внутри хранит значение аргумента по умолчанию - список по умолчанию scores - и при каждом вызове функции без указания аргумента по умолчанию этот "список по умолчанию" дополняется. Вопрос - как добраться до этого "списка по умолчанию" извне этой функции? Или инкапсуляция этого не позволит? То есть - вызвали функцию без аругмента по умолчанию, она внутри себя создала переменную типа указатель (с простым числом это не прокатывает), этот указатель указывает на одну и ту же область памяти, и при каждом вызове функции без аргумента по умолчанию содержимое этой области памяти ("список по умолчанию") последовательно модифицируется. И этот "список по умолчанию" хранится до конца работы пограммы, но до него никак не добрешься? Я примерно предполагаю ответ - доступ к этому "списку по умолчанию" должен быть предусмотрен логикой программы, в данном примере такого доступа нет - ну и доступа нет. Но все равно страннно. В этом есть какой-то полезный смысл, или это побочный эффект архитектуры Питона?
@apxapa8749
@apxapa8749 2 ай бұрын
Есть конечно доступ через магические методы, спроси чат жпт
@greshnik_d
@greshnik_d Жыл бұрын
4 года сижу на питоне, аргсы и кваргсы использовал только в обучении. Что я делаю не так?
@garrywood9195
@garrywood9195 Жыл бұрын
В формах в джанго не попадались? Например добавить данные из базы в форму?
@4aidze
@4aidze Жыл бұрын
не наследуешь методы у сложных классов с полиморфизмом)
@JustLikeChannel
@JustLikeChannel Жыл бұрын
какой у вас дистрибутив?
@zproger
@zproger Жыл бұрын
ZorinOS
@user-jf5bn1jw3b
@user-jf5bn1jw3b Жыл бұрын
Насчет args, kwargs не совсем согласен, часто использую, особенно когда нужно наследовать какой-либо класс и добавить в него свой функционал, не изменяя уже существующий, но пример из видео, да, согласен - ужас)
@zproger
@zproger Жыл бұрын
Имелось в виду не использовать тогда, когда без него можно спокойно обойтись =)
@user-jf5bn1jw3b
@user-jf5bn1jw3b Жыл бұрын
@@zproger ну это да, просто вы начали говорить, что за все время раз 5 использовали, мне это показалось странным
@darjusvasiukevic2120
@darjusvasiukevic2120 Жыл бұрын
Я человек простой, тыкаю пальцем в букварь - называю функцию
@zproger
@zproger Жыл бұрын
😮
@GladSpiR
@GladSpiR Жыл бұрын
7:04 а что тут не так? вполне может быть оберткой для трубы, а далее уже по логике но название и действия должны как-то матчится 2:06 это же язык динамической типизации зачем резать на входе-то? Массивы же разные могут быть, тут или имя менять или логику внутри функции.
@endlessvd
@endlessvd Жыл бұрын
А чё делать на C++? Там нет всех этих удобных штучек, все сердито
@zproger
@zproger Жыл бұрын
Писать с нуля =)
@vladislav8860
@vladislav8860 Жыл бұрын
В плане типов данных, принимаемых аргументов проблема всех не строго типизированных языков. На Цпп такого не встретить
@T0unFl3it
@T0unFl3it Жыл бұрын
Здравствуйте, одна маленькая поправочка: Вы здесь имеете в виду языки со _статической типизацией_, где типы переменных и выражений объявляются программистом или выводятся компилятором. Определение же "строгой/слабой" типизации зависит от сообщества, в котором употребляется. Иногда термин "строгая типизация" используется как синоним статической типизации (как в Вашем комментарии), но есть также и такое (на мой взгляд, лучшее) определение: язык является "строго типизированным", если он не позволяет нарушить собственные абстракции (такие, как типы данных) (по крайней мере, в "безопасных" контекстах). В таком понимании язык Python является строго типизированным языком с динамической типизацией, а C++ является слабо типизированным языком со статической типизацией (т.е., понятия "строгости" и "времени" типизации ортогональны). Просто мои пять копеек, думаю, кому-то будет полезно знать о таких альтернативных определениях ;-)
@ybw____
@ybw____ Жыл бұрын
возможно имеет смысл рассказать как избегать цыкличных импортов?
@zproger
@zproger Жыл бұрын
Да, расскажу в ближайшем видео
@mair1735
@mair1735 Жыл бұрын
почему-то мне вспомнился YANDERE simulator
@zproger
@zproger Жыл бұрын
Странно :D
@dnr_8365
@dnr_8365 7 ай бұрын
Странно, ролику больше года и ни одногт лайка?
@dmitry-lz1ny
@dmitry-lz1ny Жыл бұрын
А что делает **? Одинарная * это распаковка, а двойная для чего?
@zproger
@zproger Жыл бұрын
* - распаковка списков ** - распаковка словарей
@aleksei_stereo
@aleksei_stereo Жыл бұрын
А где в видео разбор проблемы с картинки?
@lichcraft_official
@lichcraft_official Жыл бұрын
А будет контент по rust?
@zproger
@zproger Жыл бұрын
Хотелось бы, но опыта в нем ещё маловато
@lichcraft_official
@lichcraft_official Жыл бұрын
@@zproger Как и у меня. Каждый день узнаю что-то новое для себя.
@robertobokarev439
@robertobokarev439 Жыл бұрын
Нафига, а главное зачем? Этот язык уже давно дед инсайт
@MagMigo
@MagMigo Жыл бұрын
@@robertobokarev439 че несёшь, раст развивающийся и хороший язык
@ai-katrin
@ai-katrin Жыл бұрын
Тут бы зашел тикто надо вот так
@user-ed8cq1rw8h
@user-ed8cq1rw8h Жыл бұрын
корисно
@zproger
@zproger Жыл бұрын
Спасибо!
@zluka7951
@zluka7951 Жыл бұрын
дядя Боб для маленьких
@zproger
@zproger Жыл бұрын
:)
@user-ly6jh3pc6z
@user-ly6jh3pc6z Жыл бұрын
Спасибо, огромное за такие ролики, жалко, что ты не можешь сравниться с активностью с миллиониками которые снимают говно контент
@zproger
@zproger Жыл бұрын
Ну я выпускаю видео каждые 7 дней, за ~3 года ни разу не отошел от этих сроков =)
@alfobarasovich55
@alfobarasovich55 Жыл бұрын
@@zproger смотрю тебя как аниме сериал еженедельно ждя новые серии :D
@zproger
@zproger Жыл бұрын
:D
@user-ly6jh3pc6z
@user-ly6jh3pc6z Жыл бұрын
@@zproger имелось ввиду активностью на канале: просмотры, лайки и т.п.
@zproger
@zproger Жыл бұрын
А, ну если снимать гавно то тоже будет активность большая) Но мне не интересно такое снимать
@smilekun2825
@smilekun2825 Ай бұрын
Пожалуйста не юзайте списочные выражение с лямбдой на лямбде заправленной условиями и распаковкой. Это буквально криг души и каждый раз хочется орать когда видишь такой код
@David_USA
@David_USA Жыл бұрын
Пожалуйста, ТАЙМ-КОДЫ!
@Dark161161
@Dark161161 Жыл бұрын
Грамотно
@zproger
@zproger Жыл бұрын
Благодарю
@iljakot_tran4131
@iljakot_tran4131 Жыл бұрын
Пусть тебе из множества N возможных лайков, return N[-1]
@user-se7gh5xh7p
@user-se7gh5xh7p Жыл бұрын
Зачет)
@user-ur5kc8er8w
@user-ur5kc8er8w Жыл бұрын
При чём тут пайтон? Данные рекомендации относятся к большинству языков программирования
@zproger
@zproger Жыл бұрын
Согласен, но примеры именно на Python, поэтому назвал видео таким образом.
@user-ur5kc8er8w
@user-ur5kc8er8w Жыл бұрын
​@@zproger Да, это понятно. Просто точно такие же темы обсуждаются в других языках программирования и точно так же не указывается что это общие правила программирования. Но понравилось чьё-то высказывание: "Самое главное и самое сложное в программировании- правильно назвать функцию".
@printon4087
@printon4087 Жыл бұрын
Можете порекомендовать ресурс для изучения Python, может книжку какую-то? Оплачивать обучение на данный момент не очень хочу, как минимум потому что мне 15 лет. Смотрел уже 3 бесплатных курса на ютубе, но хочу продвигаться дальше.
@user-cs5jp1ik6f
@user-cs5jp1ik6f Жыл бұрын
Sololearn, Проект Эйлера (первые 35 упражнений, дальше больше математика. С какого-то момента сложность резко возрастает, так-что несколько дней на упражнение станет нормой) и если совсем ноль в программировании "Грокаем алгоритмы". Когда добрался до них показались примитивными, но может просто забыл как учился ездить на велосипеде. Дальше гугл, свой проект и возможно Лутц. Лутц это не учебник, а скорее справочник. Читать только чтобы убедиться что ничего не пропустил, и то через год-полтора. Советую так же уже сейчас учить слепую печать. Полотенце на клавиатуру, указательные на пупырки и 30 минут в день месяц-полтора. После такой базы скорость печати вернется на прежний уровень и практику можно будет набивать на бытовом печатании. Сам проходил в 14, когда даже не думал о программировании. Зачем? В темноте не было видно клавиатуры :D Ах да, нулевой язык программирования - английский. Любой интернетный текст в зубы (Литературный носители переусложняют) и переводим гугл-переводчиком слово за словом примечая частые. Первые 50 часов ничего в голове задерживаться не будет, и это нормально. И не стоит гнаться за "100%" английским. Его не бывает. Игровой, ютуберный, программисткий, математический английские - выбери кусочки и все. По своему опыту так же скажу, что чтение можно выучить в вакууме. Произношение, слух и разговор можно отложить лет до 20. Так же для мотивации идеально подойдут уроки. В 9 классе за вами как раз перестанут следить, если не уже. Ну и бонус за простыню. Написано так ясно, что переводчик переводит как с русского на русский: betterexplained.com/articles/a-visual-intuitive-guide-to-imaginary-numbers/
@RoKivals
@RoKivals Жыл бұрын
Во второй ошибке (про уникальность имён функций и конфликт с другими либами) откровенно говоря бред. По вашей логике, человек при подключении библиотек должен прочитать абсолютно все ее функции и их имена, чтобы не повториться, вместо того чтобы просто нормально импортировать. Да и вообще можно было приличия ради добавить, как решить проблему ссылочного типа в аргументе
@zener_blitz
@zener_blitz Жыл бұрын
IDE подскажет если ты перезапишешь функцию из модуля это раз. Как правило в модулях просто функций нет, есть только методы внутри класса это два. Скорее речь шла о ваших собственных модулях. Не используйте wildcard import это три)
@dann1kid
@dann1kid Жыл бұрын
Разбей видос на главы, а то некоторые фичи я уже знаю, а где ты описываешь другие я хз
@red__floyd
@red__floyd Жыл бұрын
ПОЧЕМУУУУ ФУНЦИЯ?????
@MagMigo
@MagMigo Жыл бұрын
Что
@nakidai
@nakidai Жыл бұрын
Потому, что не процедура
@TePeM
@TePeM Жыл бұрын
А ещё, когда опорожняетесь- снимайте штанишки. Для кого этот мануал? Я без негатива к автору, просто интересно- есть люди, которые изучают синтаксис/продвинутый уровень и для них это не очевидно?
@4aidze
@4aidze Жыл бұрын
угу, знаю таки, кодят как орки, знают кучу языков и фреймворков
@4aidze
@4aidze Жыл бұрын
и не один не используют нормально
@stepandemin5836
@stepandemin5836 Жыл бұрын
Ничего полезного. Очередной говнокод от виндузяшника
@zproger
@zproger Жыл бұрын
ну не смотрите тогда, никто не заставляет
18 Фишек Python о которых мало кто говорит
14:13
🤔Какой Орган самый длинный ? #shorts
00:42
HOW DID HE WIN? 😱
00:33
Topper Guild
Рет қаралды 39 МЛН
Compiled Python is FAST
12:57
Doug Mercer
Рет қаралды 101 М.
Рекурсия в Python
52:13
Python Russian
Рет қаралды 3,5 М.
__new__ или __init__ в Python? Знаете ли вы это..
12:37
🤔Какой Орган самый длинный ? #shorts
00:42