- 38
- 316 266
Программирование на Python
Russia
เข้าร่วมเมื่อ 24 ก.พ. 2015
Видео лекции по курсу "Языки сценариев". Курс посвящен языку программирования Python 3. Слайды и исходные коды из демонстраций доступны на ресурсе tswr.ru/python-imkn/ и продублированы на github.com/tswr/python-imkn.
วีดีโอ
Python.10.03 GIL, multiprocessing, concurrent.futures
มุมมอง 6K9 ปีที่แล้ว
Python.10.03 GIL, multiprocessing, concurrent.futures
Python.09.01 Пространства имен, области видимости
มุมมอง 6K9 ปีที่แล้ว
Python.09.01 Пространства имен, области видимости
Python.06.05 О разбиении программы на функции
มุมมอง 3.1K9 ปีที่แล้ว
Python.06.05 О разбиении программы на функции
Python.06.02 Функции как равноправные объекты (часть 2)
มุมมอง 3.7K9 ปีที่แล้ว
Python.06.02 Функции как равноправные объекты (часть 2)
Python.06.04 Вопросы интроспекции для функций
มุมมอง 3.7K9 ปีที่แล้ว
Python.06.04 Вопросы интроспекции для функций
Python.06.01 Функции как равноправные объекты (часть 1)
มุมมอง 7K9 ปีที่แล้ว
Python.06.01 Функции как равноправные объекты (часть 1)
Python.06.03 Функции как равноправные объекты (часть 3)
มุมมอง 3.9K9 ปีที่แล้ว
Python.06.03 Функции как равноправные объекты (часть 3)
Python.05.03 Генераторные функции, yield from
มุมมอง 6K9 ปีที่แล้ว
Python.05.03 Генераторные функции, yield from
Python.05.04 Генераторные выражения, comprehensions, itertools
มุมมอง 4.5K9 ปีที่แล้ว
Python.05.04 Генераторные выражения, comprehensions, itertools
Python.03.04 Регулярные выражения (часть 3)
มุมมอง 4.9K9 ปีที่แล้ว
Python.03.04 Регулярные выражения (часть 3)
Python.03.03 Регулярные выражения (часть 2)
มุมมอง 7K9 ปีที่แล้ว
Python.03.03 Регулярные выражения (часть 2)
Python.03.02 Регулярные выражения (часть 1)
มุมมอง 11K9 ปีที่แล้ว
Python.03.02 Регулярные выражения (часть 1)
Python.01.06 Встроенные типы: tuple, list, bytearray
มุมมอง 9K9 ปีที่แล้ว
Python.01.06 Встроенные типы: tuple, list, bytearray
Python.01.04 Встроенные типы: int, bool, float, complex
มุมมอง 13K9 ปีที่แล้ว
Python.01.04 Встроенные типы: int, bool, float, complex
Спасибо. Как раз разбирался с send(). Ваше видео помогло понять этот метод.
уснуть можно
На телефоне не реально посмотреть
Попробовал открыть на своем телефоне, «у меня все работает». 😂 Если изображение размытое, то попробуйте установить в настройках TH-cam более высокое качество видео. К сожалению видео записывалось, когда еще не было популярно все смотреть с телефонов. Шрифт конечно можно было покрупнее выбрать 🥲
@@python4198 на ПК норм. Но на телефоне, даже если перевернуть, то очень с трудом.
разве у всех обьектов есть значение? Чисто теоретически можно создать class Test(int): pass - здесь значения нет по идее
вызывать круги мы не будем 🐊
лайк из 2021 спасибо за труд, очень доходчиво даже для динозавров
Большое спасибо! Очень помогло.
Ссупер очень благодарен. Не очень понятно как самому написать менеджер контекстов с помощью contextlib.
Очень обширно объяснили. Спасибо большое только немножко медленно
Когда новый материал?????)))
Очень годный материал. Спасибо :)
Listened all lessons, learned russian language. Python language, as appeared, I knew before. Шутка. Большое спасибо лектору!
Здравствуйте. Хотелось бы иметь листинги кода в файлах к вашим урокам на видео.
Очень понравилось. Всё понятно и самое главное что откуда берётся. Спасибо!!!
Спасибо за урок, очень легко и доходчиво
Спасибо большое. Всё очень доступно и понятно изложили.
Вообще никаких объяснений! Был бы неплохо услышать объяснения в каком месте слово содержится (подходит) в регулярном выражении в примерах. Про жадность вообще не понятно. Объясните, что значит <.*> (между <> любое количество любых символов, так?) и что значит <.*?>
Давайте попробую пояснить. Жадность здесь стоит понимать в обычном алгоритмическом смысле. Жадные алгоритмы, как правило, пытаются что-то делать, пока могут. '<.*>' будет набирать символы до самой последней > в тексте. Если у вас есть строка '... <h1>Title</h1> ... ', то под это регулярное выражение попадёт максимально возможное количество символов, а именно '<h1>Title</h1>'. Не до первой, а до последней. Зачастую это не то, что требуется. Если нам хотелось вычленить только название тега '<h1>', то жадность (набирание максимально длинной строки) нужно отключить. Это и делает добавление символа вопрос. Регулярное выражение '<.*?>' поймает лишь '<h1>'. Такого нежадного поведения можно было добиться, написав '<[^>]*>'. Попробуйте поэкспериментировать самостоятельно. Придумывайте свои примеры, делайте предположение, что Python сделает, а потом проверяйте их. В этом примере мы пытаемся распарсить регулярными выражениями html. Это делается для демонстрации. Если вам нужно как-то взаимодействовать с html, например, вы хотите скачать все страницы, на которые ссылается данная, то лучше использовать для этого специализированные модули, которые имеют больше знаний о устройстве html.
Здравствуйте! Пытаюсь понять зачем нужны множества если есть списки? У множеств есть какие-то преимущества над списками? Можете ли привести пример из практики, где лучше использовать вместо списков множества?
Это две разные структуры данных, которые имеют разную стоимость операций с ними. Например, поиск элемента в списке имеет в худшем случае линейную сложность, а в множестве константную в среднем. Это видно на таком тесте (запускал в ipython): In [1]: l = list(range(100000)) In [2]: %timeit 123456 in l 1.7 ms ± 19.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each) In [3]: s = set(l) In [4]: %timeit 123456 in s 43.9 ns ± 0.223 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each) Множество в этой конкретной задаче подходит гораздо лучше. Кроме этого, множество хранит только уникальные элементы, а список может содержать повторы.
от души посмеялся)) нормальные подробные уроки, спасибо за работу
Йоу, ватсап мэн)
Не забрасывайте пожалуйста Ваш ютюб канал, полезной информации в русскоязычном сегменте мало...
Спасибо за поддержку. Пока никак не найду времени, чтобы записать новый материал.
ОТЛИЧНОЕ ВИДЕО!
Спасибо за уроки .это был очень полезно
Есть ли код этого курса на гите?
Теперь да: github.com/tswr/python-imkn . Если обнаружите опечатки, то PR ;)
спасибо!
Автор, молодец! Спасибо за наглядные уроки!
Извиняюсь, но [тапл] - никакой не [тапл], а [тъюпл] или, на крайняк, [тупл]! Источник: dictionary.cambridge.org/dictionary/english/tuple
Существует несколько вариантов произношений. Мне очень нравится, что сказал на этот счет сам Guido: "I pronounce tuple too-pull on Mon/Wed/Fri and tub-pull on Tue/Thu/Sat. On Sunday I don't talk about them. :)" Источник: twitter.com/gvanrossum/status/86144775731941376?lang=en . Поэтому здесь нет место для спора, правы и Вы, и я.
спасибо все очень нужно +
Согласен, доходчиво объяснил. Спасибо. А есть возможность рассказать про асихронность, так же на пальцах, как работать с tornado, asyncio? Эти темы смежные между собой.
Да, про async конечно уже хочется рассказать. Это будет одна из первых тем в продолжении, если я отыщу время.
После просмотра платных лекций itvdn, пришлось смотреть вашу. Спасибо, всё разложили по полочкам!
автору большое спасибо
очень качественно и внятно подан материал, предварительно эту же тему изучал по книге и так не понял, как из вашего повествования. Спасибо! Еще бы описания к каждому уроку оформили с ссылками нам задания и перелинковкой курса, и было бы намного больше просмотров.
Некоторые материалы и комментарии выложены на сайте tswr.ru/python-imkn/ . Еще для каждой лекции есть тесты, подумаю над тем, где их выложить. Может быть опубликуем и формулировки задач, но они без автоматической проверки, и вся ценность в комментариях преподавателя, который потом проверяет код, чего мы не сможем предоставить для всех :(
ценность да, но даже для самого себя посидеть попытаться сделать задание или пройти тест, это же круто, мотивирует двигаться дальше. А так больше на познавательно ознакомительные лекции идет. А материал действительно хорошо подан, с очень подходящей дикцией под материал.
Добрый день. Вы не могли бы рассказать про хеширование и в частности про хеш-функции, т.к. этот вопрос часто задают на собеседованиях, а лаконичного, в Вашем стиле, ответа в интернете я не нашёл.
В нашем курсе мы предполагаем, что студенты уже знакомы с этими понятиями. Могу порекомендовать почитать классику, например, Кормена (Лейзерсона, Ривеста, Штайна) "Алгоритмы: построение и анализ" раздел Структуры данных, подраздел Хеш таблицы. Там есть описание как более распространенного варианта с chaining, так и с open addressing, используемого в реализации dict внутри cpython.
Большое спасибо.
Спасибо что сделали этот курс публичным
Первый раз открыв видео проскочила мысль, не в обиду автору, что сидит какой-то грустный человек и грустно рассказывает какие-то скучные вещи. Но послушав пару минут - подсел на то, как автор ПРАВИЛЬНО, с точки зрения обучения, выстраивает свою лекцию., т.е. умеет объяснить. Спасибо автору - самый лаконичный и приятный курс от настоящего преподавателя.
Отличнейший пример с кругом, просто все кто рассказывает про классы берут какие-то сложные объекты и ты такой думаешь "блин, вроде всё круто, но зачем". А вы доказали, что объект "круг" действительно лучше создавать как объект класса, а не словарями и т.п. Спасибо за отличные уроки.
Здравствуйте! Прошу помощи! Нужно при помощи регулярных выражений удалить все повторяющиеся слова из строки (Привет, привет, привет! мир, мир ... мир, мир, мир!) Подскажите, пожалуйста, как подступиться?
Прекрасные уроки, но когда продолжение?
Я прошу прощения: >>> name = "Dee" >>> name 'Dee' >>> "Hey, {name}".format(name) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'name' Что я делаю не так?!? Python 3.5.1
Нужно написать format(name=name), поскольку чтобы подставлять вместо {something} нужно передавать именованные параметры. Позиционные используются для {0}, {1} или просто {}.
Спасибо, понятно.
Ну, товарищ, уроки то хорошие, но этот прям квантовый скачек - Бац!! и от условий к итераторам и исключениям :)
Не переживайте, дальше они подробно разобраны. А это так, для затравочки))))
Так при каком случае copy.deepcopy() не достаточно "глубокий"??
Смотрите комментарии ниже.
@@python4198 ниже нету ж вроде)
@@v_adimvadi_m6722 наверное у всех по-разному сортирует. В одном из соседних комментариев к этому видео бсуждаем пример a = [1, 2] b = [a, a] с = copy.deepcopy(b)
Привет! За сколько месяцев можно изучать Python?
Студенты изучают два семестра. В первом лекции и семинары, во втором только семинары. Этого достаточно для того, чтобы начать писать цельные самостоятельные программы. Если вы не будете ничем заниматься помимо Python, то можно и за два месяца достичь хороших результатов. Все зависит от вас. Но наверное "голого" Python вам будет недостаточно и потом придется освоить еще какие-то библиотеки/фрейморки.
oKey!
Добрый день. Подскажите, пожалуйста, эти видео-уроки были записаны в рамках очного курса в УрФУ или, возможно, в рамках онлайн-курса? Если это был онлайн-курс, то не продолжается ли он и сейчас?
Эти видео-уроки в данный момент используются на очных курсах на мат-мехе. О полноценном онлайн варианте мы не думали.
Ага, понятно. Спасибо за оперативный ответ.
Спасибо, всё по делу показано. У меня появился вопрос: если делать итератор по аналогии с range (который может принимать как один, так и несколько параметров) с точки зрения реализации этот код оптимален, или его можно было еще как то улучшить?: class Range(): def __init__(self, *args): if len(args) == 1: self._current = 0 self._stop = args[0] self._step = 1 elif len(args) == 2: self._current = args[0] self._stop = args[1] self._step = 1 elif len(args) == 3: self._current = args[0] self._stop = args[1] self._step = args[2] def __iter__(self): return self def __next__(self): if self._current < self._stop: self._result = self._current self._current += self._step return self._result else: raise StopIteration
Range можно сильно более компактно и выразительно записать через генераторную функцию.
Спасибо! В своих скриптах, благодаря новым знаниям, полученным после просмотра ваших лекций, начал применять на своих скриптах. Например, создание папок по шаблону (генерация названий папок - генераторная функция, заменившая цикл for). Код стал намного компактнее.
Спасибо, самые толковые уроки
вполне доходчиво все объясняет
а почему нужно написать именно a[1][0]?
Разбираемся слева направо. Сначала есть a, который суть list из трех элементов с типами bool, list, int. Таким образом a[1] выбирает в списке a второй по счету элемент (индексация с нуля), то есть вложенный list. Затем в этом вложенном списке мы берем элемент с индексом 0, который является тройкой.
Подозреваю, что copy.deepcopy() создаёт копии только для mutable объектов, для immutable копия не создаётся (для tuple - это точно так) Отличный курс!
Для immutable объекта смысла создавать копию нет, он же все равно не изменится. Так что это логичная оптимизация. Есть еще вот такой случай: a = [1, 2] b = [a, a] с = copy.deepcopy(b) И после этого проверка c[0] is c[1] выдает True. То есть deepcopy не стал создавать повторную копию объекта a. За этим тоже безусловно есть логика, но такое поведение может показаться не совсем очевидным и "недостаточно глубоким".
@Roomboy копию создал, но только один раз, а не два раза для b[0] и b[1]
Крышичка)))
Никак не могу понять, как правильно указывать список аргументов.У меня 4 сервера, по которым нужно сделать запрос, каждый в отдельном потоке. Серверы перечислены в списке. Пытаюсь сделать это так: for i in range (len(server_list)): thread = threading.Thread(target=status_checker, args=(server_list[i])) В итоге имею ошибку по каждому из потоков: Exception in thread Thread-1:Traceback (most recent call last): File "E:\Program Files\Python36-32\lib\threading.py", line 916, in _bootstrap_innerself.run() File "E:\Program Files\Python36-32\lib\threading.py", line 864,in runself._target(*self._args, **self._kwargs) TypeError: status_checker() argument after * must be an iterable, not intФункция status_checker сама по себе работает нормально, ей на вход подаётся один аргумент.
К сожалению код нормально не вставляется
Здесь есть несколько проблем. Основная - это то, что вы хотели написать (server_list[i],). Обратите внимание на дополнительную запятую. Именно благодаря ей это выражение превращается в tuple с одним элементом. Второстепенная - идиоматичнее писать for server in server_list, поскольку так короче и яснее, ведь индекс вам на самом деле нигде не нужен. А если и был бы нужен, то лучше бы было воспользоваться enumerate.
Спасибо!
Спасибо, очень интересно!
"Да, я понимаю, что мало кто находит в себе смелость складывать круги..." Вот тут пришлось прерваться минут на 5))