Составляй выражения Python как Профи (Особенности, фишки и ошибки тернарного оператора)

  Рет қаралды 28,797

ZProger [ IT ]

ZProger [ IT ]

Жыл бұрын

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

Пікірлер: 150
@nakamasama
@nakamasama Жыл бұрын
Спасибо автору, что дал мне 250 IQ. Пускай я С++ разработчик и в Питон забегаю изредка...
@zproger
@zproger Жыл бұрын
😎
@lexxkrt
@lexxkrt Жыл бұрын
во всех нормальных языках есть тернарный оператор, и даже больше, есть инкремент декремент, чего нет в питоне
@mrslashx
@mrslashx Жыл бұрын
возсожно можно написать модуль на С с инт функцией которая бкдет ссылку увеличевать и вот тебе инкремент почти
@user-ju4uh2de6i
@user-ju4uh2de6i Жыл бұрын
коллега по уровню iq вы не одиноки
@maksych8690
@maksych8690 Жыл бұрын
По поводу True or "Some". Можно использовать для установки дефолтного значения. Да, однозначно лучше проверять на None, но и этот вариант приемлемый. def func(data: dict[str, str] = None) -> None: data = data or {} ...
@user-fg2dg4oj2y
@user-fg2dg4oj2y Жыл бұрын
однозначно лучше избегать опциональных аргументов вообще
@MaxusR
@MaxusR Жыл бұрын
Полезут косяки с Falsey значениями вроде нуля или пустой строки/списка.
@MaxusR
@MaxusR Жыл бұрын
@@user-fg2dg4oj2y Опциональные аргументы повышают гибкость. Порой вместо трёх похожих по содержанию функций лучше сделать одну с опциями.
@user-uh4bz3lh8l
@user-uh4bz3lh8l Жыл бұрын
@@user-fg2dg4oj2y например ты пишешь бота модератора для тг. Есть встроенная функция для изменения прав участника группы, где ты в параметрах должен выбрать что должен уметь пользователь, а прав различных 13, а поменять ты хочешь всего 1- возможность отправлять гифки(а то он задолбал спамить ими). В этой функции для каждого права должна быть выделена отдельная переменная. Так вот если бы не было keyword аргументов, то тебе бы каждый раз пришлось бы вводить во все остальные права значение, которое отвечает за то, чтобы это право не поменялось. Или пришлось бы дробить 1 функцию на 13 разных, что плохо если ты хочешь поменять сразу все, или только 10 из них например. Так что keyword аргументы очень полезная вещь и я привел пример из личной практики.
@victorstelmashchuk4840
@victorstelmashchuk4840 Жыл бұрын
Что-то я нихрена не понимаю, что сложного в строке print(a or "пусто"). Это вызывает сложности только при первом знакомстве. Зато когда становится привычным экономит много строчек кода
@alexandergrigorev4518
@alexandergrigorev4518 Жыл бұрын
Просто ты ещё джун потом поймёшь 😁
@zproger
@zproger Жыл бұрын
Сложность в том, что оно выглядит не очевидно в больших проектах
@victorstelmashchuk4840
@victorstelmashchuk4840 Жыл бұрын
@@zproger Я же говорю дело привычки. :) А как вы короче напишете вывод какой-либо переменной когда вместо None или нуля требуется какая-то строка как у меня в примере. Я соглашусь, что лучше не загромождать это вложениями друг в друга, но советовать совсем не использовать подобные конструкции по-моему не правильно
@lexxkrt
@lexxkrt Жыл бұрын
@@victorstelmashchuk4840 а например конструкция print(a.text if a else '') в данном случае проверяется само существование объекта, иначе вызов метода объекта вызовет ошибку. или например посложнее print(a.text if (a:=soup.select('div.someclass')) else 'No class')
@vlatterran
@vlatterran Жыл бұрын
Я считаю что как такое использование не логического типа данных в логических конструкция - идея плохая, ибо без контекста фиг его знает что автор имелл в виду. Если написать if a, то я сразу предпологаю что а - это булева переменная, а если написать if len(a) >0, то сразу понятно что а это некая коллекция, у которой есть длинна. И сравнивать с нулём я тоже считаю необходимым, ибо когда ты видишь что идёт прямое сравнение с нулём, тебе не надо вспоминать что 0 - это ложь.
@brawlerx1240
@brawlerx1240 Жыл бұрын
а подскажите пожалуйста как читать эти ошибки __main__.class object at ........
@user-vs4wb5db3q
@user-vs4wb5db3q Жыл бұрын
касательно последнего, был у меня ещё опыт использования and в подобном примере, крч например, вы хотите проверить условие, и если оно верно то вызвать функцию, тут как раз это пригодится, к примеру: os.path.isfile("cache.dat") and not os.remove("cache.dat") and print("Кэш очищен.") удалит файл если он существует и если удалит то напечатает "кэш очищен" иначе ничего не напечатает. никто не запрещает продолжать эту цепочку, стоит помнить что not имеет самый высокий приоритет, and - средний, а or - низший, то есть сначала выполнятся все not, потом проверятся все and и только потом пойдут or.
@elastvd7503
@elastvd7503 Жыл бұрын
Супер, спасибо!!
@gbk_youtube5448
@gbk_youtube5448 Жыл бұрын
Момент 5:23 Попытался сам разобраться в коде: status = True #Присваиваем переменной status значение True или же 1 connect_label = ("1.0", "2.0")[status] #берём из кортежа значение с индексом status(1) в нашем случае "2.0" print(f"Server version: {connect_label}") #выводим на экран строку со значением которое присвоили на второй строке Я написал это ещё не досмотрел видео, так что я не говорю что это правильно
@metasy_
@metasy_ Жыл бұрын
насчет True or "Some", это можно использовать если первое значение может вернуть None и нужно его заменить на другое более подходящее
@live-superdulia9097
@live-superdulia9097 9 ай бұрын
Добрый день! Очень интересное видео) Не знаете, есть ли подобные способы написания конструкции try except в одну строчку?
@zoreyan
@zoreyan Жыл бұрын
Это один из лучших обучений, спасибо сенсей!
@zproger
@zproger Жыл бұрын
Благодарю!
@wasd1338
@wasd1338 Жыл бұрын
По вопросу на 5.25. если булевые значения проверить на принадлежность к классу int - isinstance(True, int) вернёт так же True как и если проверить isinstance(True, bool), потому что bool является дочерним классом от класса int, поэтому не удивительно что они могут работать как int) я хочу сказать что обозначение булевых за 0 и 1 это в данном случае не просто условность из области логики, это в том числе реализовано в кишках языка
@indlborm
@indlborm Жыл бұрын
В копилку стоит добавить неопределенность типов данных. Пример: x=2 y = x/2 if x//2 == 0 else (x//2 + 1) При четных x будет int. При нечетных -- float.
@frand2158
@frand2158 Жыл бұрын
А разве не наоборот?
@AntiCureshow
@AntiCureshow Жыл бұрын
не пизди сука
@sadandpathetic
@sadandpathetic Жыл бұрын
В твоём примере и при чётных, и при нечётных будет тип int (за исключением чисел 0, 1 и с плавающей точкой). Если в этом примере целочисленное деление заменить на остаток от деления, то при нечётных будет int, а при чётных float, что довольно очевидно из-за наличия целочисленного деления только в одном из блоков if-else
@jurissiberian7568
@jurissiberian7568 Жыл бұрын
Тернарные операторы не обязательно использовать для получения вычисленного значения. К примеру: func1() if else func2().
@user-vs4wb5db3q
@user-vs4wb5db3q Жыл бұрын
В этом случае лучше будет использовать обычные условия, так как они не сохранят значения выражения, что будет работать быстрее, проверял лично.
@Rejgan318
@Rejgan318 Жыл бұрын
func1 и func2 здесь со скобками. То есть вызов этих функций, которые что-то возвращают, то есть вычисляемое выражение. Пример неудачный. И вообще с точки зрения питона - везде объекты. Так что нет большой разницы между func1 (без скобок, без вызова) и, например 5 или "Hello"
@user-le9wf6oq6b
@user-le9wf6oq6b Жыл бұрын
Хм, спасибо за видео. Данными конструкциями я пользуюсь часто, когда упрощаю обычный if/else, с подводным камнем все просто, не использую данную конструкцию :) 5:22 почему только люди с высоким IQ?) Я думаю, что это очевидно, сразу понятно, что True и False это 1 и 0, если некоторые, конечно, знают/не забыли 7:00 Интересно, но да, в большом коде будет трудно понять, либо легко допустить ошибку, если такого много
@luispakvard5681
@luispakvard5681 Жыл бұрын
А с True or "Some" и False or "Some" то оба если одно из 2х имеет значение True то и результат будет True а print выводит 1е трушное встреченое значение в 2м варианте трушное встреченое значение "Some" в 1м True правильно ?
@alexandrkononenko7872
@alexandrkononenko7872 Жыл бұрын
как ты пишешь вместо >= и != то что ты пишешь. как ты заменил операторы?
@user-pz9ju6ss7r
@user-pz9ju6ss7r Жыл бұрын
04:30 - в чём заключается подводность того, что случится ошибка, если поток дойдёт до кода, выдающего ошибку?
@qwertymangames1800
@qwertymangames1800 Жыл бұрын
На "or" не гони. В lua это единственный способ задать параметр по умолчанию в начале функции, например так: x = x or 1 Или использовать тернарный оператор: x = x or 1 and 0 - что гораздо понятнее того "тернарного оператора" через if что приводится в python. Ведь эта конструкция гораздо более читаемая и имеет тот же порядок как и например тернарная операция в C#
@vrabosh
@vrabosh Жыл бұрын
True and "истина" or "иначе" Мне такой вариант больше нравиться, чем if else
@luispakvard5681
@luispakvard5681 Жыл бұрын
True приводиться к 1 поэтому ("1.0","2.0")[True] выбирает 2.0 по индексу 1 -> Server version:2.0 Правильно?
@robeenx
@robeenx Жыл бұрын
2:34 если первое условие False, второе условие через and даже не будет проверяться. Пример: assert 0 if 0 and 1 / 0 else 1 # 1
@DERJNDZE
@DERJNDZE Жыл бұрын
Прикол, а мы в мгу про ленивость and и or изучили довольно рано, в особенностях языка еще. По сути, помогает в основном только в процессе создания проклятых однострочечных амальгаций на 400 колонок, но иногда бывает полезным и в более обыденных вещах
@metasy_
@metasy_ Жыл бұрын
сразу не понял, но понял до объяснения фичи с ("1.0", "2.0")[True]
@zproger
@zproger Жыл бұрын
Круто =)
@TrueSentiago
@TrueSentiago 6 ай бұрын
7:25 Любое непустое значение == True
@user-jn2pj3en6l
@user-jn2pj3en6l Жыл бұрын
7:15 нужно очень много времени? Чтобы понять что and это false seeker и при отсутствии false он вернет последний true, а or это true seeker и при отсутствии true он вернет последний false? Честно совсем не понял в чем конкретно для python сложность такой записи.
@CrossBend
@CrossBend Жыл бұрын
5:24 = а! дак это обращение к картежу по индексу. на сколько я понимаю, коллекции в памяти хранятся +/- одинаково, а их особенность как раз доступ по индексу (не считая множества)
@TheNikita
@TheNikita Жыл бұрын
Давно не писал комментариев в поддержку канала, видео очень классное и информативное! Но есть вопрос как ты сделал >= одним символом?
@zproger
@zproger Жыл бұрын
Это не я, это IDE форматирует так =)
@TheNikita
@TheNikita Жыл бұрын
@@zproger Понял, надо будет обновить pycharm :)
@Omskiy_vinokur
@Omskiy_vinokur Жыл бұрын
Прохожу курс по питону там такого много так что всё легко
@zproger
@zproger Жыл бұрын
=)
@dmpn7427
@dmpn7427 11 ай бұрын
5:25 - проверяю айкью: возвращает первое значение, если в квадратных скобках True... пошёл смотреть дальше
@harlok13
@harlok13 Жыл бұрын
в исходном коде джанго встречаются такие конструкции True or "Some". например, reverse() из django.urls
@rokot
@rokot Жыл бұрын
У меня вопрос. Есть ли альтернатива Try Except. У меня модуль для пользователя. Внутри много функций. Пользователь, обращаясь к функции может указывать какие-то параметры, а может не указывать. Это сокращает код для пользователя. То есть какие-то параметры не являются обязательными. Чтобы так получилось, внутри функции идёт обращение к функциям, где прописан try except, если пользователь указал параметр, то срабатывает try, если нет, то except назначает свой по умолчанию. Всё хорошо, всё работает, но визуально огромная простыня из этих функций try except. Match case попробовал, чего-то не получилось, не работает.
@eugenesemin4082
@eugenesemin4082 Жыл бұрын
Так для этого же существует возможность задать параметры со значением по умолчанию. Там есть только тонкость, если значением является изменяемый тип, то по умолчанию задают None и уже в теле функции задают дефолтное значение. Но там никаких try-except не нужно, обычным if сразу вначала тела функции проверяется все и назначается. Ну и еще, для имитации switch-case из других языков, кроме констркций if-elif-else, так же используют словари. Try-except тут зачем? Эта конструкция нужна для отлова и обработки ошибок.
@user-mh2rt7qs7f
@user-mh2rt7qs7f Жыл бұрын
Привет, что за тема для PyCharm?
@zproger
@zproger Жыл бұрын
Github Dark
@user-mh2rt7qs7f
@user-mh2rt7qs7f Жыл бұрын
@@zproger спасибо
@KVAatHome
@KVAatHome Жыл бұрын
При работе с БД в Odoo достаточно часто в возврате стоит: a and a.a or None или нечто похожее. Обычная практика.
@Tiwula
@Tiwula Жыл бұрын
В Lua частенько использую true and "a" or "b", не считаю это чем то сложным и не обычным)
@qwertymangames1800
@qwertymangames1800 Жыл бұрын
В lua это единственный доступный тернарный оператор. По работе очень похож на тернарный оператор из C#. И к счастью в lua нет этого кривого оператора из python через if который непонятно для кого вообще придумали. Где ответы размазаны слева и справа. Это странно. Вопрос ориентации python разработчиков всё ещё открыт.
@uladzislawchyrets
@uladzislawchyrets Жыл бұрын
Расскажи про моржовый оператор
@zproger
@zproger Жыл бұрын
Есть такое видео на канале
@artembagachkov933
@artembagachkov933 Жыл бұрын
3:33 вам даже не нужна будет обфускация 😂
@zproger
@zproger Жыл бұрын
=)
@fedorrasputin3782
@fedorrasputin3782 Жыл бұрын
Какая ОС используется в видео ?
@zproger
@zproger Жыл бұрын
Zorin OS
@fedorrasputin3782
@fedorrasputin3782 Жыл бұрын
Довольно удобна ОС. Было бы интересно послушать Ваш вариант ее настройки для комфортной работы.
@alexandermartin5694
@alexandermartin5694 Жыл бұрын
Код нужно комментировать, тогда все практики приемлемы. Сложный код, там где одно действие имеет множество последствий, без комментариев в любом виде будет сложно понять.
@zproger
@zproger Жыл бұрын
Комментарии важны, это да
@vasiliynet3425
@vasiliynet3425 Жыл бұрын
Неявное приведение типов, не только "плохое решение питониста") а вообще штука с подводными камнями, особенно в языках с нестрогой типизацией, JS уже прославился своими шутка типа 1 + '1' = 11; 1 * '1' = 1 )
@jackmoral9127
@jackmoral9127 Жыл бұрын
вот тут тоже интересно какая комбинация клавишь нужна чтобы >= в один символ вписать, походу клаву перенастроить нужно раз такой синтаксис работает, ща прогуглю)
@eugenesemin4082
@eugenesemin4082 Жыл бұрын
Шрифт нужно искать, с поддержкой подобных лигатур, а не клавиатуру настраивать.))
@lexxkrt
@lexxkrt Жыл бұрын
что за символ такой больше равно?
@zproger
@zproger Жыл бұрын
Так IDE форматирует
@northersan6669
@northersan6669 3 күн бұрын
print("Bob" * True + "Pope" * False or "Miss") а так? :D
@user-vs4wb5db3q
@user-vs4wb5db3q Жыл бұрын
А вот ещё для разбора, постарался помудрить для искушённого зрителя: FR = [72, 101, 108, 108, 111], try: FR[0] += 0o40, except TypeError: FR += [lambda s: FR'%c'%s, 87, 111, 114, 108, 100, 33], finally: FR = iter(FR) [(*O, s), (I, *l)], = FR, print(*(I(s) for s in O), I(s), *(I(s) for s in l), sep='')
@holodina
@holodina Жыл бұрын
# создание кортежа с вложенным списком в котором коды символов из таблицы ascii FR = [72, 101, 108, 108, 111], # 72(H), 101(e), 108(l), 111(o) try: # добавление символа пробела, в конец вложенного списка кортежа FR[0] += 0o40, # 0o40 == 32 коду символа из таблицы ascii except TypeError: # добавляем в кортеж второй вложенный список и в этот список мы добавляем # функцию для форматирования char символов и коды символов из таблицы ascii # FR на печать не выводится, оно не часть строки, а задаёт ей поведение # F Форматная строка(хотя используется старый способ форматирования через знак процента) # R Сырая строка(подавление экранирования), используется обычно для регулярных выражений FR += [lambda s: FR'%c' % s, 87, 111, 114, 108, 100, 33], # 87(W), 111(o), 114(r), 108(l), 100(d), 33(!) finally: FR = iter(FR) # преобразование кортежа в объект итератора [(*O, s), (I, *l)], = FR, # распаковка через listcomp. # В "O" распаковываем первый список без последнего элемента, последний элемент распаковывается в "s" # В "I" распаковывается функция форматирования из второго списка, а в "l" оставшаяся часть его часть # Задаем sep(separator - разделитель) равный ""(пустой строке), по дефолту sep=" " # Используя генераторное включение(gencomp) создаем объект генератора # *(I(s) for s in O) Итерируемся по списку "O" и значения списка прогоняем через функцию форматирования "I" # Получившийся генератор распаковываем и получаем первое слово Hello # I(s) Вызываем функцию форматирования "I", которой передаем код символа пробела (32 или же 0o40) из "s" # И получается после Hello у нас пробел, который используется в качестве разделителя # И снова используем gencomp и получаем объект генератора # *(I(s) for s in l) Снова итерируемся по списку "l" и значения списка прогоняем через функцию форматирования "I" # И вновь распаковываем этот генератор и получаем слово World! print(*(I(s) for s in O), I(s), *(I(s) for s in l), sep='') # напечатать слово Hello World! Ну как?
@user-vs4wb5db3q
@user-vs4wb5db3q Жыл бұрын
Ну идеально конечно.
@user-vs4wb5db3q
@user-vs4wb5db3q Жыл бұрын
К слову, по аналогии с or - and вернёт первое ложное значение или последнее истинное если условие истинно. Например: '' and 0 and True == '' -1 and 0 and "Ф_Ф" is 0 1 and 2 and 3 is 3
@grriimx
@grriimx Жыл бұрын
Как тема называется?)
@zproger
@zproger Жыл бұрын
github dark
@lexxkrt
@lexxkrt Жыл бұрын
есть же замечательная конструкция ?: но питон идет по своему пути. пусть будет свой путь но почему бы не использовать конструкцию из других языков тоже. ну и по поводу этого оператора когда 2 недели назад начал изучать питон это первый оператор который меня интересовал и эту конструкцию сразу же нашел, как можно ей не пользоваться, только если ты из бейсика пришел
@zproger
@zproger Жыл бұрын
Ну не во всех языках же есть такая конструкция, иногда делают свою реализацию, а так конечно было бы круто если бы во всех япах оно работало одинаково
@lexxkrt
@lexxkrt Жыл бұрын
@@zproger ну в питоне много конструкций и их следует использовать, а бейсик стиль следует выбросить из головы как дурной пример программирования
@godlunt
@godlunt Жыл бұрын
3.10 тоже не понимаю в чем сложность понять, там же в первом идем по пунктам ==легко, во втором пользуемся банальными математическими правилами. Вероятнее всего такой подход сложнее понять при большом опыте программирования, однако школьникам и студентам вероятнее всего также пользоваться данными методами будет проще
@godlunt
@godlunt Жыл бұрын
Огромный респект за видос, ты крут, спасибо за все что делаешь!
@nemofosix5015
@nemofosix5015 5 ай бұрын
Трудночитаемо
@cnhfgjy
@cnhfgjy Жыл бұрын
Ничего не понял, но буду разбираться...
@zproger
@zproger Жыл бұрын
=)
@Hloredea
@Hloredea Жыл бұрын
5:56 ниче се такого я даже не догодался использовать в коде
@Hloredea
@Hloredea Жыл бұрын
Стоп че за херня там чё первое значение из условия выводится всегда?
@Karaku228
@Karaku228 Жыл бұрын
Учу питон около двух месяцев и обо всем этом знаю. Это что получается, я уже профи и могу устраиваться на работу?
@zproger
@zproger Жыл бұрын
Думаю пора бы уже написать свою ОС с нуля 🙃
@luckytima2315
@luckytima2315 Жыл бұрын
Вы меня обманули, вы пользуетесь зорином на постояной основе)))
@zproger
@zproger Жыл бұрын
Ну для видео да, это виртуалка для записи =)
@evgeniyevgeniy8352
@evgeniyevgeniy8352 Жыл бұрын
2:23 Это просто неправда. Он не проверяет условие 1>2 и если оно верно, то возвращает 1. Он работает так: 1) Проверяет условие "1>2 and 1>3". Оно False, поэтому вычисляется значение справа он первого else. 2) Проверяет условие "2>3". Оно False, поэтому возвращается значение после второго else, которое равно 3.
@eugenesemin4082
@eugenesemin4082 Жыл бұрын
В данном случае лишь ошибка у автора в том, что у него оператор and, а с ним, если бы 1>2 было бы истинным, действительно сначала бы вторая часть условия проверялась бы, т.к. and, по сути, останавливает свое выполнение после первого ложного значения, если таковое есть, или вычисляет все, если ложных значений нет. А вот если бы был оператор or, то единица была бы выведена сразу после вычисления 1 > 2 (при условии, что считаем его истинным), без вычисления всех остальных выражений, как и говорится в видео. Тут хорошо моржовый оператор подойдет для экспериментов: (a := 1) if ((b := 1 + 2) or (c := 3 + 5)) else (d := 2) после вычисления данного выражения, будут существовать только переменные а и b, т.к. будут выполнены только выражения с ними. Если поменять or на and, то и переменная с появится, т.к. и ее выражение будет вычислено.
@donfedor007
@donfedor007 Жыл бұрын
Версия сервера 2.0
@nakidai
@nakidai Жыл бұрын
1:28 Ага, а еще вместо объявлении функции приписать abs = lambda number: то вообще в 0 строк решение!
@mammadalimammadaliyev6105
@mammadalimammadaliyev6105 Жыл бұрын
Тернарный оператор можно еще усложнить и циклом. [x for x in (1,2,3) if x % 2 == 0 else None]. еще более нечитабельный код)
@user-pz9ju6ss7r
@user-pz9ju6ss7r Жыл бұрын
хм... это сарказм?
@zproger
@zproger Жыл бұрын
Это уже немного другое
@eugenesemin4082
@eugenesemin4082 Жыл бұрын
Судя по записи неработающего list comprehension, нечитаем но для Вас по причине, что Вы ни с тем, как работают камприхеншены не разобрались, не с сутью того, чем является тернарный оператор. Рабочий вариант выглядит так [x if x % 2 == 0 else None for x in (1, 2, 3)] - выражение, результат которого попадает в итоговый список (коим в данном случае является выражение с тернарником), должно стоять на первом месте в камприхеншене. И читаются камприхеншены, если в них не запихивать несколько уровней сложности, гораздо лучше аналогичного простого цикла.
@MaxusR
@MaxusR Жыл бұрын
Ура! Мой IQ больше 250!
@zproger
@zproger Жыл бұрын
ура
@01011968Desgner
@01011968Desgner Жыл бұрын
Автор точно программист? Многое из показанного просто упирается в понимание работы тех или иных операторов. С заявки про мой высокий IQ - реально орнул!)))) А если еще *args и **kwargs применить, то вообще капец программированию?))))
@zproger
@zproger Жыл бұрын
Сказал первое что в голову пришло)) Просто часто видел комментарии к этим выражениям, что многие не могли их понять, это говорит о том, что большинству оно трудно дается =)
@MaxusR
@MaxusR Жыл бұрын
Ну даже если разобраться можно, то всё равно количество усилий для понимания этого кода не стоит той пользы, которую это уменьшение размера кода даёт. Я про особо извращённые конструкции конечно же.
@gta_KaskaD
@gta_KaskaD Жыл бұрын
1:29 как зделать такой >=
@zproger
@zproger Жыл бұрын
Это IDE так делает =)
@gta_KaskaD
@gta_KaskaD Жыл бұрын
@@zproger это не pyCharm?
@zproger
@zproger Жыл бұрын
Это Pycharm. Возможно цветовая тема так делает. Это Github Dark если что
@metasy_
@metasy_ Жыл бұрын
@@zproger это Pycharm автоматом делает на любой теме, и я думаю это фишка JetBrains потому что не только в Pycharm такая штука
@holodina
@holodina Жыл бұрын
@@metasy_ в пайчарм комьюнити эдишене нет такого
@super_man-ArtOfWar3
@super_man-ArtOfWar3 Жыл бұрын
5:25 ОООООО У МЕНЯ ОКАЗЫВАЕТСЯ IQ ВЫШЕ 250
@zproger
@zproger Жыл бұрын
Да, это официальная статистика
@user-gw2lg9ff4i
@user-gw2lg9ff4i 11 ай бұрын
Я как специалист эксель на питон написал программу.... нах мне нуже твой нейм фо немн? Объясни мне пожалуйста? Она та программа прекрасно работает.. ты как старый дед
@shuvimoro4869
@shuvimoro4869 Жыл бұрын
Аааааааааааа Я понял пример с "Server version" X = True print("iq > 250") if X else print("iq
@madazzy
@madazzy Жыл бұрын
Я себя, конечно, гением не считаю, но я все эти примеры легко понимаю и сомневаюсь, что код, запутанный этими конструкциями, вообще никто не поймёт. Я думаю достаточно просто знать о таких конструкциях, чтобы такой код понять.
@user-sx1sv3km3m
@user-sx1sv3km3m Жыл бұрын
Да только вот обычный if с правильной вложенностью и отступами быстрее читается, а на том же рефакторинге чем быстрее читается код тем лучше. Лучше уж потратить в два раза больше места коде, чем потом в два раза больше времени читая код в одну строку.
@QwDragon
@QwDragon Жыл бұрын
@@user-sx1sv3km3m ничего не лучше.
@eugenesemin4082
@eugenesemin4082 Жыл бұрын
Чаще всего трудность с ними возникает у тех, у кого с английским не очень все хорошо. Тернарник (если конечно в него не запихали кучу условий, но это и для просто предложения на человеческом языке имеет место), читается как простая фраза на английском. Плюс, если брать пример из видео, где в тернарном операторе еще и логические выражения внутри - то и он легко бы читался, если бы эти выражения просто в скобки заключили, обозначив приоритет операций. Почему-то это часто стесняются делать. 1 if (1 > 2 and 1 > 3) else 2 if (2 > 3) else 3 заметно легче мозгу обработать, чем 1 if 1 > 2 and 1 > 3 else 2 if 2 > 3 else 3, т.к. во втором случае, ему еще приходится дополнительно приоритеты операций обрабатывать. Хотя вложенные тернарники лучше не использовать, тут if-elif будут наглядней.
@jdjsjsbd
@jdjsjsbd Жыл бұрын
понять то все поймут, дело во времени
@Hloredea
@Hloredea Жыл бұрын
5:20 наверно 2.0 потому что True == (1 and "a"); False == (0 and "")
@Hloredea
@Hloredea Жыл бұрын
Найс...
@Hloredea
@Hloredea Жыл бұрын
А я думал все могут нормально прочитать это однострочное условие..
@Hloredea
@Hloredea Жыл бұрын
7:00 ну как бы (1 == 1 or 2 == 2) == True; (1 == 0 or 1 == 1) == True тоже. Логика лол..
@Hloredea
@Hloredea Жыл бұрын
Про вывод истинного значения из условия я не знал
@vladhanov1530
@vladhanov1530 Жыл бұрын
Тот случай когда видео очень растянуто
@yinyang1529
@yinyang1529 Жыл бұрын
у меня IQ 200 😎😎😎
@zproger
@zproger Жыл бұрын
Да 😎
@eagold
@eagold Жыл бұрын
так аналог ?: в c#
@kotenok6919
@kotenok6919 Жыл бұрын
or выше гор. Да я люблю сидеть в отладчике 10 дней, и что?
@zproger
@zproger Жыл бұрын
Бывает =)
@yuzu-dev
@yuzu-dev Жыл бұрын
Первый!
@zproger
@zproger Жыл бұрын
=)
@user-pz9ju6ss7r
@user-pz9ju6ss7r Жыл бұрын
половина ролика вообще не про тернарный оператор...
@damirasanov8993
@damirasanov8993 Жыл бұрын
Первый
@zproger
@zproger Жыл бұрын
=)
@frand2158
@frand2158 Жыл бұрын
Ну про ошибки это дичь. Это интерпретируемый язык блин, чего вы ожидали
@fliksudnone4760
@fliksudnone4760 Жыл бұрын
Внимание вопрос: для кого это видео?
@zproger
@zproger Жыл бұрын
Для кого-то =)
@fliksudnone4760
@fliksudnone4760 Жыл бұрын
@@zproger Ну вообще я могу сильно раскритиковать это видео, но не буду, т.к слишком долго =)
@Strqwerty
@Strqwerty Жыл бұрын
Спасибо за 250 индекс iq. Я оценил себя по другому и теперь отписываюсь.
@stupiddudelive1893
@stupiddudelive1893 Жыл бұрын
Ля, мой iq 249. Абидна...
@zproger
@zproger Жыл бұрын
=(
Don't eat centipede 🪱😂
00:19
Nadir Sailov
Рет қаралды 21 МЛН
How To Choose Ramen Date Night 🍜
00:58
Jojo Sim
Рет қаралды 58 МЛН
10 признаков того, что вы новичок в Python
4:59
18 Фишек Python о которых мало кто говорит
14:13
C++ Разработчик учит Python
28:01
Winderton
Рет қаралды 472 М.
Don't eat centipede 🪱😂
00:19
Nadir Sailov
Рет қаралды 21 МЛН