Тёмный

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

ZProger [ IT ]
Подписаться 118 тыс.
Просмотров 30 тыс.
50% 1

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

Опубликовано:

 

29 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 149   
@nakamasama
@nakamasama 2 года назад
Спасибо автору, что дал мне 250 IQ. Пускай я С++ разработчик и в Питон забегаю изредка...
@zproger
@zproger 2 года назад
😎
@lexxkrt
@lexxkrt 2 года назад
во всех нормальных языках есть тернарный оператор, и даже больше, есть инкремент декремент, чего нет в питоне
@mrslashx
@mrslashx 2 года назад
возсожно можно написать модуль на С с инт функцией которая бкдет ссылку увеличевать и вот тебе инкремент почти
@ВасилийД-й2щ
@ВасилийД-й2щ Год назад
коллега по уровню iq вы не одиноки
@artemxyi
@artemxyi 2 месяца назад
@@lexxkrt нахуй надо?есть же number -= number или также с плюсом
@victorstelmashchuk4840
@victorstelmashchuk4840 2 года назад
Что-то я нихрена не понимаю, что сложного в строке print(a or "пусто"). Это вызывает сложности только при первом знакомстве. Зато когда становится привычным экономит много строчек кода
@alexandergrigorev4518
@alexandergrigorev4518 2 года назад
Просто ты ещё джун потом поймёшь 😁
@zproger
@zproger 2 года назад
Сложность в том, что оно выглядит не очевидно в больших проектах
@victorstelmashchuk4840
@victorstelmashchuk4840 2 года назад
@@zproger Я же говорю дело привычки. :) А как вы короче напишете вывод какой-либо переменной когда вместо None или нуля требуется какая-то строка как у меня в примере. Я соглашусь, что лучше не загромождать это вложениями друг в друга, но советовать совсем не использовать подобные конструкции по-моему не правильно
@lexxkrt
@lexxkrt 2 года назад
@@victorstelmashchuk4840 а например конструкция print(a.text if a else '') в данном случае проверяется само существование объекта, иначе вызов метода объекта вызовет ошибку. или например посложнее print(a.text if (a:=soup.select('div.someclass')) else 'No class')
@vlatterran
@vlatterran 2 года назад
Я считаю что как такое использование не логического типа данных в логических конструкция - идея плохая, ибо без контекста фиг его знает что автор имелл в виду. Если написать if a, то я сразу предпологаю что а - это булева переменная, а если написать if len(a) >0, то сразу понятно что а это некая коллекция, у которой есть длинна. И сравнивать с нулём я тоже считаю необходимым, ибо когда ты видишь что идёт прямое сравнение с нулём, тебе не надо вспоминать что 0 - это ложь.
@harlok13
@harlok13 Год назад
в исходном коде джанго встречаются такие конструкции True or "Some". например, reverse() из django.urls
@jackmoral9127
@jackmoral9127 2 года назад
вот тут тоже интересно какая комбинация клавишь нужна чтобы >= в один символ вписать, походу клаву перенастроить нужно раз такой синтаксис работает, ща прогуглю)
@eugene_na_tytrube
@eugene_na_tytrube 2 года назад
Шрифт нужно искать, с поддержкой подобных лигатур, а не клавиатуру настраивать.))
@Tiwula
@Tiwula 2 года назад
В Lua частенько использую true and "a" or "b", не считаю это чем то сложным и не обычным)
@qwertymangames1800
@qwertymangames1800 Год назад
В lua это единственный доступный тернарный оператор. По работе очень похож на тернарный оператор из C#. И к счастью в lua нет этого кривого оператора из python через if который непонятно для кого вообще придумали. Где ответы размазаны слева и справа. Это странно. Вопрос ориентации python разработчиков всё ещё открыт.
@luispakvard5681
@luispakvard5681 2 года назад
А с True or "Some" и False or "Some" то оба если одно из 2х имеет значение True то и результат будет True а print выводит 1е трушное встреченое значение в 2м варианте трушное встреченое значение "Some" в 1м True правильно ?
@fedorrasputin3782
@fedorrasputin3782 2 года назад
Какая ОС используется в видео ?
@zproger
@zproger 2 года назад
Zorin OS
@fedorrasputin3782
@fedorrasputin3782 2 года назад
Довольно удобна ОС. Было бы интересно послушать Ваш вариант ее настройки для комфортной работы.
@cnhfgjy
@cnhfgjy 2 года назад
Ничего не понял, но буду разбираться...
@zproger
@zproger 2 года назад
=)
@mammadalimammadaliyev6105
@mammadalimammadaliyev6105 2 года назад
Тернарный оператор можно еще усложнить и циклом. [x for x in (1,2,3) if x % 2 == 0 else None]. еще более нечитабельный код)
@ЙенФенФыр
@ЙенФенФыр 2 года назад
хм... это сарказм?
@zproger
@zproger 2 года назад
Это уже немного другое
@eugene_na_tytrube
@eugene_na_tytrube 2 года назад
Судя по записи неработающего list comprehension, нечитаем но для Вас по причине, что Вы ни с тем, как работают камприхеншены не разобрались, не с сутью того, чем является тернарный оператор. Рабочий вариант выглядит так [x if x % 2 == 0 else None for x in (1, 2, 3)] - выражение, результат которого попадает в итоговый список (коим в данном случае является выражение с тернарником), должно стоять на первом месте в камприхеншене. И читаются камприхеншены, если в них не запихивать несколько уровней сложности, гораздо лучше аналогичного простого цикла.
@Karaku228
@Karaku228 2 года назад
Учу питон около двух месяцев и обо всем этом знаю. Это что получается, я уже профи и могу устраиваться на работу?
@zproger
@zproger 2 года назад
Думаю пора бы уже написать свою ОС с нуля 🙃
@SrLju
@SrLju 2 года назад
Я себя, конечно, гением не считаю, но я все эти примеры легко понимаю и сомневаюсь, что код, запутанный этими конструкциями, вообще никто не поймёт. Я думаю достаточно просто знать о таких конструкциях, чтобы такой код понять.
@ТимонЯблоков
@ТимонЯблоков 2 года назад
Да только вот обычный if с правильной вложенностью и отступами быстрее читается, а на том же рефакторинге чем быстрее читается код тем лучше. Лучше уж потратить в два раза больше места коде, чем потом в два раза больше времени читая код в одну строку.
@QwDragon
@QwDragon 2 года назад
@@ТимонЯблоков ничего не лучше.
@eugene_na_tytrube
@eugene_na_tytrube 2 года назад
Чаще всего трудность с ними возникает у тех, у кого с английским не очень все хорошо. Тернарник (если конечно в него не запихали кучу условий, но это и для просто предложения на человеческом языке имеет место), читается как простая фраза на английском. Плюс, если брать пример из видео, где в тернарном операторе еще и логические выражения внутри - то и он легко бы читался, если бы эти выражения просто в скобки заключили, обозначив приоритет операций. Почему-то это часто стесняются делать. 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 Год назад
понять то все поймут, дело во времени
@frand2158
@frand2158 2 года назад
Ну про ошибки это дичь. Это интерпретируемый язык блин, чего вы ожидали
@brawlerx1240
@brawlerx1240 2 года назад
а подскажите пожалуйста как читать эти ошибки __main__.class object at ........
@metasy_
@metasy_ 2 года назад
сразу не понял, но понял до объяснения фичи с ("1.0", "2.0")[True]
@zproger
@zproger 2 года назад
Круто =)
@metasy_
@metasy_ 2 года назад
насчет True or "Some", это можно использовать если первое значение может вернуть None и нужно его заменить на другое более подходящее
@NotxctQ
@NotxctQ 2 месяца назад
Поддерживаю, например в answer = input("Enter text: ") or "default" удобно для подстановки дефолтного ответа 7:26
@maksych8690
@maksych8690 2 года назад
По поводу True or "Some". Можно использовать для установки дефолтного значения. Да, однозначно лучше проверять на None, но и этот вариант приемлемый. def func(data: dict[str, str] = None) -> None: data = data or {} ...
@ВиталийУдарцев-п2б
однозначно лучше избегать опциональных аргументов вообще
@MaxusR
@MaxusR 2 года назад
Полезут косяки с Falsey значениями вроде нуля или пустой строки/списка.
@MaxusR
@MaxusR 2 года назад
@@ВиталийУдарцев-п2б Опциональные аргументы повышают гибкость. Порой вместо трёх похожих по содержанию функций лучше сделать одну с опциями.
@Блинчик-н4о
@Блинчик-н4о Год назад
@@ВиталийУдарцев-п2б например ты пишешь бота модератора для тг. Есть встроенная функция для изменения прав участника группы, где ты в параметрах должен выбрать что должен уметь пользователь, а прав различных 13, а поменять ты хочешь всего 1- возможность отправлять гифки(а то он задолбал спамить ими). В этой функции для каждого права должна быть выделена отдельная переменная. Так вот если бы не было keyword аргументов, то тебе бы каждый раз пришлось бы вводить во все остальные права значение, которое отвечает за то, чтобы это право не поменялось. Или пришлось бы дробить 1 функцию на 13 разных, что плохо если ты хочешь поменять сразу все, или только 10 из них например. Так что keyword аргументы очень полезная вещь и я привел пример из личной практики.
@alexandermartin5694
@alexandermartin5694 Год назад
Код нужно комментировать, тогда все практики приемлемы. Сложный код, там где одно действие имеет множество последствий, без комментариев в любом виде будет сложно понять.
@zproger
@zproger Год назад
Комментарии важны, это да
@Omskiy_vinokur
@Omskiy_vinokur 2 года назад
Прохожу курс по питону там такого много так что всё легко
@zproger
@zproger 2 года назад
=)
@super_man-ArtOfWar3
@super_man-ArtOfWar3 2 года назад
5:25 ОООООО У МЕНЯ ОКАЗЫВАЕТСЯ IQ ВЫШЕ 250
@zproger
@zproger 2 года назад
Да, это официальная статистика
@gbk_youtube5448
@gbk_youtube5448 2 года назад
Момент 5:23 Попытался сам разобраться в коде: status = True #Присваиваем переменной status значение True или же 1 connect_label = ("1.0", "2.0")[status] #берём из кортежа значение с индексом status(1) в нашем случае "2.0" print(f"Server version: {connect_label}") #выводим на экран строку со значением которое присвоили на второй строке Я написал это ещё не досмотрел видео, так что я не говорю что это правильно
@nikd1ssv
@nikd1ssv 2 года назад
А вот ещё для разбора, постарался помудрить для искушённого зрителя: 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 2 года назад
# создание кортежа с вложенным списком в котором коды символов из таблицы 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! Ну как?
@nikd1ssv
@nikd1ssv 2 года назад
Ну идеально конечно.
@evgeniyevgeniy8352
@evgeniyevgeniy8352 2 года назад
2:23 Это просто неправда. Он не проверяет условие 1>2 и если оно верно, то возвращает 1. Он работает так: 1) Проверяет условие "1>2 and 1>3". Оно False, поэтому вычисляется значение справа он первого else. 2) Проверяет условие "2>3". Оно False, поэтому возвращается значение после второго else, которое равно 3.
@eugene_na_tytrube
@eugene_na_tytrube 2 года назад
В данном случае лишь ошибка у автора в том, что у него оператор and, а с ним, если бы 1>2 было бы истинным, действительно сначала бы вторая часть условия проверялась бы, т.к. and, по сути, останавливает свое выполнение после первого ложного значения, если таковое есть, или вычисляет все, если ложных значений нет. А вот если бы был оператор or, то единица была бы выведена сразу после вычисления 1 > 2 (при условии, что считаем его истинным), без вычисления всех остальных выражений, как и говорится в видео. Тут хорошо моржовый оператор подойдет для экспериментов: (a := 1) if ((b := 1 + 2) or (c := 3 + 5)) else (d := 2) после вычисления данного выражения, будут существовать только переменные а и b, т.к. будут выполнены только выражения с ними. Если поменять or на and, то и переменная с появится, т.к. и ее выражение будет вычислено.
@01011968Desgner
@01011968Desgner 2 года назад
Автор точно программист? Многое из показанного просто упирается в понимание работы тех или иных операторов. С заявки про мой высокий IQ - реально орнул!)))) А если еще *args и **kwargs применить, то вообще капец программированию?))))
@zproger
@zproger 2 года назад
Сказал первое что в голову пришло)) Просто часто видел комментарии к этим выражениям, что многие не могли их понять, это говорит о том, что большинству оно трудно дается =)
@MaxusR
@MaxusR 2 года назад
Ну даже если разобраться можно, то всё равно количество усилий для понимания этого кода не стоит той пользы, которую это уменьшение размера кода даёт. Я про особо извращённые конструкции конечно же.
@kotenok6919
@kotenok6919 2 года назад
or выше гор. Да я люблю сидеть в отладчике 10 дней, и что?
@zproger
@zproger 2 года назад
Бывает =)
@northersan6669
@northersan6669 4 месяца назад
print("Bob" * True + "Pope" * False or "Miss") а так? :D
@jurissiberian7568
@jurissiberian7568 2 года назад
Тернарные операторы не обязательно использовать для получения вычисленного значения. К примеру: func1() if else func2().
@nikd1ssv
@nikd1ssv 2 года назад
В этом случае лучше будет использовать обычные условия, так как они не сохранят значения выражения, что будет работать быстрее, проверял лично.
@Rejgan318
@Rejgan318 2 года назад
func1 и func2 здесь со скобками. То есть вызов этих функций, которые что-то возвращают, то есть вычисляемое выражение. Пример неудачный. И вообще с точки зрения питона - везде объекты. Так что нет большой разницы между func1 (без скобок, без вызова) и, например 5 или "Hello"
@shuvimoro4869
@shuvimoro4869 2 года назад
Аааааааааааа Я понял пример с "Server version" X = True print("iq > 250") if X else print("iq
@qwertymangames1800
@qwertymangames1800 Год назад
На "or" не гони. В lua это единственный способ задать параметр по умолчанию в начале функции, например так: x = x or 1 Или использовать тернарный оператор: x = x or 1 and 0 - что гораздо понятнее того "тернарного оператора" через if что приводится в python. Ведь эта конструкция гораздо более читаемая и имеет тот же порядок как и например тернарная операция в C#
@СергейШирнин-е1р
@СергейШирнин-е1р 2 года назад
7:15 нужно очень много времени? Чтобы понять что and это false seeker и при отсутствии false он вернет последний true, а or это true seeker и при отсутствии true он вернет последний false? Честно совсем не понял в чем конкретно для python сложность такой записи.
@vasiliynet3425
@vasiliynet3425 Год назад
Неявное приведение типов, не только "плохое решение питониста") а вообще штука с подводными камнями, особенно в языках с нестрогой типизацией, JS уже прославился своими шутка типа 1 + '1' = 11; 1 * '1' = 1 )
@СпециальныйагентСтивенс-ФБР
Я как специалист эксель на питон написал программу.... нах мне нуже твой нейм фо немн? Объясни мне пожалуйста? Она та программа прекрасно работает.. ты как старый дед
@dmpn7427
@dmpn7427 Год назад
5:25 - проверяю айкью: возвращает первое значение, если в квадратных скобках True... пошёл смотреть дальше
@CrossBend
@CrossBend Год назад
5:24 = а! дак это обращение к картежу по индексу. на сколько я понимаю, коллекции в памяти хранятся +/- одинаково, а их особенность как раз доступ по индексу (не считая множества)
@KVAatHome
@KVAatHome 2 года назад
При работе с БД в Odoo достаточно часто в возврате стоит: a and a.a or None или нечто похожее. Обычная практика.
@nakidai
@nakidai 2 года назад
1:28 Ага, а еще вместо объявлении функции приписать abs = lambda number: то вообще в 0 строк решение!
@nikd1ssv
@nikd1ssv 2 года назад
касательно последнего, был у меня ещё опыт использования and в подобном примере, крч например, вы хотите проверить условие, и если оно верно то вызвать функцию, тут как раз это пригодится, к примеру: os.path.isfile("cache.dat") and not os.remove("cache.dat") and print("Кэш очищен.") удалит файл если он существует и если удалит то напечатает "кэш очищен" иначе ничего не напечатает. никто не запрещает продолжать эту цепочку, стоит помнить что not имеет самый высокий приоритет, and - средний, а or - низший, то есть сначала выполнятся все not, потом проверятся все and и только потом пойдут or.
@vrabosh
@vrabosh 2 года назад
True and "истина" or "иначе" Мне такой вариант больше нравиться, чем if else
@Strqwerty
@Strqwerty 2 года назад
Спасибо за 250 индекс iq. Я оценил себя по другому и теперь отписываюсь.
@indlborm
@indlborm 2 года назад
В копилку стоит добавить неопределенность типов данных. Пример: 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
@artembagachkov933
@artembagachkov933 2 года назад
3:33 вам даже не нужна будет обфускация 😂
@zproger
@zproger 2 года назад
=)
@rokot
@rokot 2 года назад
У меня вопрос. Есть ли альтернатива Try Except. У меня модуль для пользователя. Внутри много функций. Пользователь, обращаясь к функции может указывать какие-то параметры, а может не указывать. Это сокращает код для пользователя. То есть какие-то параметры не являются обязательными. Чтобы так получилось, внутри функции идёт обращение к функциям, где прописан try except, если пользователь указал параметр, то срабатывает try, если нет, то except назначает свой по умолчанию. Всё хорошо, всё работает, но визуально огромная простыня из этих функций try except. Match case попробовал, чего-то не получилось, не работает.
@eugene_na_tytrube
@eugene_na_tytrube 2 года назад
Так для этого же существует возможность задать параметры со значением по умолчанию. Там есть только тонкость, если значением является изменяемый тип, то по умолчанию задают None и уже в теле функции задают дефолтное значение. Но там никаких try-except не нужно, обычным if сразу вначала тела функции проверяется все и назначается. Ну и еще, для имитации switch-case из других языков, кроме констркций if-elif-else, так же используют словари. Try-except тут зачем? Эта конструкция нужна для отлова и обработки ошибок.
@winder-krons
@winder-krons 2 года назад
Хм, спасибо за видео. Данными конструкциями я пользуюсь часто, когда упрощаю обычный if/else, с подводным камнем все просто, не использую данную конструкцию :) 5:22 почему только люди с высоким IQ?) Я думаю, что это очевидно, сразу понятно, что True и False это 1 и 0, если некоторые, конечно, знают/не забыли 7:00 Интересно, но да, в большом коде будет трудно понять, либо легко допустить ошибку, если такого много
@lexxkrt
@lexxkrt 2 года назад
что за символ такой больше равно?
@zproger
@zproger 2 года назад
Так IDE форматирует
@robeenx
@robeenx 2 года назад
2:34 если первое условие False, второе условие через and даже не будет проверяться. Пример: assert 0 if 0 and 1 / 0 else 1 # 1
@Hloredea
@Hloredea Год назад
А я думал все могут нормально прочитать это однострочное условие..
@alexandrkononenko7872
@alexandrkononenko7872 2 года назад
как ты пишешь вместо >= и != то что ты пишешь. как ты заменил операторы?
@stupiddudelive1893
@stupiddudelive1893 2 года назад
Ля, мой iq 249. Абидна...
@zproger
@zproger 2 года назад
=(
@MaxusR
@MaxusR 2 года назад
Ура! Мой IQ больше 250!
@zproger
@zproger 2 года назад
ура
@Фиджер-ю9ш
@Фиджер-ю9ш 2 года назад
Привет, что за тема для PyCharm?
@zproger
@zproger 2 года назад
Github Dark
@Фиджер-ю9ш
@Фиджер-ю9ш 2 года назад
@@zproger спасибо
@wasd1338
@wasd1338 2 года назад
По вопросу на 5.25. если булевые значения проверить на принадлежность к классу int - isinstance(True, int) вернёт так же True как и если проверить isinstance(True, bool), потому что bool является дочерним классом от класса int, поэтому не удивительно что они могут работать как int) я хочу сказать что обозначение булевых за 0 и 1 это в данном случае не просто условность из области логики, это в том числе реализовано в кишках языка
@vladhanov1530
@vladhanov1530 Год назад
Тот случай когда видео очень растянуто
@TrueSentiago
@TrueSentiago 11 месяцев назад
7:25 Любое непустое значение == True
@grriimx
@grriimx 2 года назад
Как тема называется?)
@zproger
@zproger 2 года назад
github dark
@ЙенФенФыр
@ЙенФенФыр 2 года назад
половина ролика вообще не про тернарный оператор...
@yuzu-dev
@yuzu-dev 2 года назад
Первый!
@zproger
@zproger 2 года назад
=)
@Anonymous00754
@Anonymous00754 4 месяца назад
у меня айку больше 150 ))))))))))))
@Hloredea
@Hloredea Год назад
5:20 наверно 2.0 потому что True == (1 and "a"); False == (0 and "")
@Hloredea
@Hloredea Год назад
Найс...
@damirasanov8993
@damirasanov8993 2 года назад
Первый
@zproger
@zproger 2 года назад
=)
@Hloredea
@Hloredea Год назад
7:00 ну как бы (1 == 1 or 2 == 2) == True; (1 == 0 or 1 == 1) == True тоже. Логика лол..
@Hloredea
@Hloredea Год назад
Про вывод истинного значения из условия я не знал
@donfedor007
@donfedor007 2 года назад
Версия сервера 2.0
@eagold
@eagold 2 года назад
так аналог ?: в c#
@Hloredea
@Hloredea Год назад
5:56 ниче се такого я даже не догодался использовать в коде
@Hloredea
@Hloredea Год назад
Стоп че за херня там чё первое значение из условия выводится всегда?
@luckytima2315
@luckytima2315 2 года назад
Вы меня обманули, вы пользуетесь зорином на постояной основе)))
@zproger
@zproger 2 года назад
Ну для видео да, это виртуалка для записи =)
@lexxkrt
@lexxkrt 2 года назад
есть же замечательная конструкция ?: но питон идет по своему пути. пусть будет свой путь но почему бы не использовать конструкцию из других языков тоже. ну и по поводу этого оператора когда 2 недели назад начал изучать питон это первый оператор который меня интересовал и эту конструкцию сразу же нашел, как можно ей не пользоваться, только если ты из бейсика пришел
@zproger
@zproger 2 года назад
Ну не во всех языках же есть такая конструкция, иногда делают свою реализацию, а так конечно было бы круто если бы во всех япах оно работало одинаково
@lexxkrt
@lexxkrt 2 года назад
@@zproger ну в питоне много конструкций и их следует использовать, а бейсик стиль следует выбросить из головы как дурной пример программирования
@DERJNDZE
@DERJNDZE 2 года назад
Прикол, а мы в мгу про ленивость and и or изучили довольно рано, в особенностях языка еще. По сути, помогает в основном только в процессе создания проклятых однострочечных амальгаций на 400 колонок, но иногда бывает полезным и в более обыденных вещах
@live-superdulia9097
@live-superdulia9097 Год назад
Добрый день! Очень интересное видео) Не знаете, есть ли подобные способы написания конструкции try except в одну строчку?
@luispakvard5681
@luispakvard5681 2 года назад
True приводиться к 1 поэтому ("1.0","2.0")[True] выбирает 2.0 по индексу 1 -> Server version:2.0 Правильно?
@ЙенФенФыр
@ЙенФенФыр 2 года назад
04:30 - в чём заключается подводность того, что случится ошибка, если поток дойдёт до кода, выдающего ошибку?
@yinyang1529
@yinyang1529 2 года назад
у меня IQ 200 😎😎😎
@zproger
@zproger 2 года назад
Да 😎
@fliksudnone4760
@fliksudnone4760 2 года назад
Внимание вопрос: для кого это видео?
@zproger
@zproger 2 года назад
Для кого-то =)
@fliksudnone4760
@fliksudnone4760 2 года назад
@@zproger Ну вообще я могу сильно раскритиковать это видео, но не буду, т.к слишком долго =)
@elastvd7503
@elastvd7503 2 года назад
Супер, спасибо!!
@gta_KaskaD
@gta_KaskaD 2 года назад
1:29 как зделать такой >=
@zproger
@zproger 2 года назад
Это IDE так делает =)
@gta_KaskaD
@gta_KaskaD 2 года назад
@@zproger это не pyCharm?
@zproger
@zproger 2 года назад
Это Pycharm. Возможно цветовая тема так делает. Это Github Dark если что
@metasy_
@metasy_ 2 года назад
@@zproger это Pycharm автоматом делает на любой теме, и я думаю это фишка JetBrains потому что не только в Pycharm такая штука
@holodina
@holodina 2 года назад
@@metasy_ в пайчарм комьюнити эдишене нет такого
@godlunt
@godlunt 2 года назад
3.10 тоже не понимаю в чем сложность понять, там же в первом идем по пунктам ==легко, во втором пользуемся банальными математическими правилами. Вероятнее всего такой подход сложнее понять при большом опыте программирования, однако школьникам и студентам вероятнее всего также пользоваться данными методами будет проще
@godlunt
@godlunt 2 года назад
Огромный респект за видос, ты крут, спасибо за все что делаешь!
@nemofosix5015
@nemofosix5015 10 месяцев назад
Трудночитаемо
@TheNikita
@TheNikita 2 года назад
Давно не писал комментариев в поддержку канала, видео очень классное и информативное! Но есть вопрос как ты сделал >= одним символом?
@zproger
@zproger 2 года назад
Это не я, это IDE форматирует так =)
@TheNikita
@TheNikita 2 года назад
@@zproger Понял, надо будет обновить pycharm :)
@nikd1ssv
@nikd1ssv 2 года назад
К слову, по аналогии с or - and вернёт первое ложное значение или последнее истинное если условие истинно. Например: '' and 0 and True == '' -1 and 0 and "Ф_Ф" is 0 1 and 2 and 3 is 3
Далее
Почему?
00:22
Просмотров 177 тыс.
pumpkins #shorts
00:39
Просмотров 12 млн
Почему?
00:22
Просмотров 177 тыс.