Программистика
Закрытый канал
Лучший канал про python Ссылка для друга: https://t.me/+Ai6ughKtf5g2ZmFi Купить рекламу: https://telega.in/c/+Ai6ughKtf5g2ZmFi Админ: @JeyRahol По рекламе: @ReivuManager
Больше5 770
Подписчики
-424 часа
+57 дней
-8730 дней
Архив постов
5 769
🗑 Первое программное обеспечение с открытым исходным кодом
Первой программой с открытым исходным кодом считается операционная система GNU, созданная Ричардом Столлманом в 1983 году. Этот проект сыграл ключевую роль в развитии движения за свободное программное обеспечение и оказал значительное влияние на всю индустрию программного обеспечения.
История создания GNU
Ричард Столлман, будучи сотрудником Лаборатории искусственного интеллекта Массачусетского технологического института (MIT), столкнулся с растущими ограничениями в использовании программного обеспечения. В то время многие компании начали закрывать исходный код своих программ, что препятствовало пользователям вносить изменения и делиться программами. В ответ на это Столлман решил создать полностью свободную операционную систему, которая бы предоставляла пользователям полную свободу в использовании, модификации и распространении программного обеспечения.
В сентябре 1983 года Столлман объявил о начале проекта GNU (рекурсивный акроним, означающий "GNU's Not Unix") и вскоре основал Фонд свободного программного обеспечения (Free Software Foundation, FSF) для поддержки разработки GNU.
Принципы свободного программного обеспечения
Проект GNU был основан на четырех основных свободах, которые определяют свободное программное обеспечение:
⏺Свобода использования: Пользователь имеет право использовать программу для любых целей.
⏺Свобода изучения: Пользователь может изучать, как программа работает, и изменять её для своих нужд. Для этого необходим доступ к исходному коду.
⏺Свобода распространения: Пользователь может распространять копии программы, помогая другим.
⏺Свобода улучшения: Пользователь может улучшать программу и публиковать свои улучшения, чтобы вся общественность могла извлечь из этого пользу.
Вклад GNU в развитие открытого исходного кода
Проект GNU разработал множество важных компонентов операционной системы, включая компилятор GCC (GNU Compiler Collection), текстовый редактор Emacs, утилиты командной строки и многие другие инструменты. Однако ключевым элементом, который отсутствовал в GNU, было ядро операционной системы.
В 1991 году Линус Торвальдс выпустил ядро Linux, которое вместе с компонентами GNU составило полноценную операционную систему. Это сочетание стало известно как GNU/Linux и стало одной из самых популярных и широко используемых операционных систем с открытым исходным кодом.
Влияние на современное программное обеспечение
Проект GNU и философия свободного программного обеспечения оказали глубокое влияние на развитие программного обеспечения с открытым исходным кодом. Сегодня множество популярных проектов, таких как Linux, Apache, Mozilla Firefox и многие другие, следуют принципам свободного программного обеспечения, предоставляя пользователям свободу использования, модификации и распространения программ.
Фонд свободного программного обеспечения продолжает свою деятельность, продвигая идеалы свободного программного обеспечения и поддерживая разработку новых проектов. Ричард Столлман и проект GNU заложили основы для движения, которое изменило подход к разработке и использованию программного обеспечения, сделав его более открытым и доступным для всех.
@programistica // #article
5 769
Изучите применение ChatGPT в рабочих целях, чтобы получить от этого прибыль. Сейчас самое время начать использовать искусственный интеллект.
Здесь вы узнаете, почему стоит освоить ChatGPT. Это поможет вам:
- Использовать ChatGPT в вашей профессиональной сфере.
- Предлагать компаниям разработку индивидуально дообученного ChatGPT по заказу.
- Увеличить свой доход, освоив навык создания индивидуально дообученного ChatGPT.
Зарегистрируйтесь на бесплатный вебинар, чтобы узнать больше деталей.
Реклама. ООО "ТЕРРА ЭЙАЙ". ИНН 9728019395. erid: LjN8K7SKF
5 769
👀 Книга: Основы искусственного интеллекта в примерах на Python
⏺Инструментальные средства для разработки приложений искусственного интеллекта
⏺Основы языка программирования Python
⏺Элементы искусственного интеллекта
⏺Программная реализация элементов нейронной сети
⏺Построение многослойных нейронных сетей
И многое другое
@programistica // #doc
5 769
🛡 Переполнение памяти
Переполнение памяти (buffer overflow) возникает, когда программа пытается записать больше данных в буфер, чем он может вместить, что приводит к перезаписи смежных участков памяти. Эта уязвимость может быть использована злоумышленниками для выполнения произвольного кода или нарушения работы программы, и она стала причиной многих известных кибератак, начиная с червя Morris в 1988 году и вплоть до современных эксплойтов. Устранение таких уязвимостей требует тщательного контроля за обработкой входных данных и использованием безопасных функций для работы с памятью.
@programistica // #article5 769
💻 Вопрос из собеседования: Как проверить Python-файл на синтаксические ошибки, но не запускать его?
В экосистеме Python есть утилита py_compile. С ее помощью можно проверить файл на синтаксические ошибки, но не запускать его. Для этого в терминале необходимо ввести следующую команду:
python -m py_compile file.py
На месте file.py должно быть название вашего файла. Перед вызовом утилиты py_compile надо обязательно указать флаг -m.
Надеюсь это поможет вам пройти собеседование на желаемую вами работу, удачи🔥🔥🔥@programistica // #jobs
5 769
Знания, профессиональный английский и хороший юмор — набор любого айтишника🔥
А быть в тренде и качать необходимые скиллы помогут наши каналы:
⏩ Библиотека Кодера — книги, ресурсы, шпаргалки и статьи для разработчиков
⏩ CodeLang — английский язык в IT-сфере
⏩ JSON → Айти Memes — мемы для программистов и айтишников
5 769
🛡 Регулярные выражения в python
Регулярные выражения (regex) в Python используются для поиска, соответствия и манипулирования строками на основе шаблонов. В Python регулярные выражения реализованы в модуле
re. Вот основные функции и примеры их использования:
Основные функции модуля re:
⏺re.match(): Проверяет, соответствует ли начало строки заданному шаблону.
⏺re.search(): Ищет шаблон в строке и возвращает первый найденный совпадающий объект.
⏺re.findall(): Находит все совпадения шаблона в строке и возвращает их в виде списка.
⏺re.finditer(): Находит все совпадения шаблона и возвращает их в виде итератора.
⏺re.sub(): Заменяет все совпадения шаблона на заданную строку.
⏺re.split(): Разделяет строку по заданному шаблону.
👩💻Примеры использования:
import re
# Пример строки
text = "The rain in Spain falls mainly in the plain."
# 1. re.match()
match = re.match(r'The', text)
if match:
print("Match found:", match.group())
else:
print("No match found")
# 2. re.search()
search = re.search(r'rain', text)
if search:
print("Search found:", search.group())
else:
print("No search found")
# 3. re.findall()
findall = re.findall(r'in', text)
print("Findall results:", findall)
# 4. re.finditer()
finditer = re.finditer(r'in', text)
for match in finditer:
print("Finditer match:", match.group(), "at position", match.start())
# 5. re.sub()
substitute = re.sub(r'rain', 'snow', text)
print("Substitute result:", substitute)
# 6. re.split()
split = re.split(r'\s', text)
print("Split result:", split)
Объяснение примера:
➡️re.match(r'The', text): Проверяет, начинается ли строка text с "The".
➡️re.search(r'rain', text): Ищет первое вхождение "rain" в строке text.
➡️re.findall(r'in', text): Находит все вхождения "in" в строке text.
➡️re.finditer(r'in', text): Возвращает итератор, который перебирает все вхождения "in" в строке text.
➡️re.sub(r'rain', 'snow', text): Заменяет все вхождения "rain" на "snow" в строке text.
➡️re.split(r'\s', text): Разделяет строку text по пробелам (символы пробела).
Дополнительные примеры шаблонов:
⏺\d: Любая цифра.
⏺\D: Любой символ, кроме цифры.
⏺\w: Любая буква, цифра или символ подчеркивания.
⏺\W: Любой символ, кроме буквы, цифры или символа подчеркивания.
⏺\s: Любой пробельный символ.
⏺\S: Любой непробельный символ.
⏺.: Любой символ, кроме новой строки.
⏺^: Начало строки.
⏺$: Конец строки.
⏺*: 0 или более повторений.
⏺+: 1 или более повторений.
⏺?: 0 или 1 повторение.
⏺{n}: Ровно n повторений.
⏺{n,}: n или более повторений.
⏺{n,m}: От n до m повторений.
Регулярные выражения — мощный инструмент для работы с текстом, и они могут быть полезны в самых разных задачах, от простой проверки ввода до сложного парсинга текста.
@programistica // #article5 769
🤖 Эффект "Hello, World!"
Эффект "Hello, World!" — это популярное верование среди программистов, согласно которому написание и успешный запуск программы, выводящей на экран фразу "Hello, World!", приносит удачу начинающим разработчикам и служит благоприятным началом в изучении нового языка программирования. Эта традиция, зародившаяся в 1970-х годах, не только символизирует первый шаг в освоении программирования, но и помогает новичкам преодолеть психологический барьер, связанный с началом изучения чего-то нового, предоставляя простую, но в то же время полноценную задачу для реализации. Таким образом, "Hello, World!" стал не только учебным инструментом, но и своеобразным ритуалом, символизирующим вступление в мир программирования и технологий.
@programistica // #article
5 769
Хеш-таблицы в python
Хеш-таблицы — это структуры данных, которые позволяют эффективно хранить и извлекать данные с использованием хеш-функций. В Python хеш-таблицы реализованы с помощью встроенного типа данных dict (словарь).
Основные концепции хеш-таблиц
👀
Хеш-функция: Преобразует ключ в индекс массива, где будет храниться значение.
👀Коллизии: Ситуации, когда два разных ключа имеют одинаковый хеш. Разрешаются с помощью различных методов, таких как цепочки (chaining) или открытая адресация (open addressing).
Словари в Python
Словарь — это неупорядоченная коллекция пар "ключ-значение", где каждый ключ уникален. Словари обеспечивают быстрый доступ к значениям по ключам благодаря использованию хеш-таблицы.
Примеры использования словарей
👀Создание и инициализация словаря
# Создание пустого словаря
my_dict = {}
# Создание словаря с начальными значениями
my_dict = {
"ключ1": "значение1",
"ключ2": "значение2",
"ключ3": "значение3"
}
👀Добавление и обновление элементов
my_dict["ключ4"] = "значение4" # Добавление нового элемента
my_dict["ключ2"] = "новое значение2" # Обновление значения существующего ключа
👀Доступ к элементам
value = my_dict["ключ1"] # Получение значения по ключу
# Использование метода get для безопасного доступа
value = my_dict.get("ключ5", "значение по умолчанию") # Возвращает "значение по умолчанию", если ключ не найден
👀Удаление элементов
del my_dict["ключ3"] # Удаление элемента по ключу
value = my_dict.pop("ключ4", "значение по умолчанию") # Удаление и возврат значения по ключу
👀Проверка наличия ключа
if "ключ1" in my_dict:
print("ключ1 присутствует в словаре")
👀Итерация по словарю
# Итерация по ключам
for key in my_dict:
print(key, my_dict[key])
# Итерация по значениям
for value in my_dict.values():
print(value)
# Итерация по парам ключ-значение
for key, value in my_dict.items():
print(key, value)
👀Пример использования словаря
Рассмотрим пример, в котором мы используем словарь для подсчета количества вхождений каждого слова в тексте:
def word_count(text):
words = text.split()
counts = {}
for word in words:
word = word.lower() # Приводим слово к нижнему регистру для учета разных регистров
if word in counts:
counts[word] += 1
else:
counts[word] = 1
return counts
text = "Python is great and Python is fun"
result = word_count(text)
for word, count in result.items():
print(f"Слово '{word}' встречается {count} раз(а)")
Описание кода:
⏺Функция word_count: Принимает текст, разбивает его на слова и использует словарь для подсчета количества вхождений каждого слова.
⏺Нормализация слов: Приводим слова к нижнему регистру для учета разных регистров.
⏺Подсчет слов: Используем словарь counts для хранения количества вхождений каждого слова.
⏺Вывод результата: Итерируем по словарю и выводим количество вхождений каждого слова.
Словари — это мощный и гибкий инструмент для работы с данными. Они обеспечивают быстрый доступ к значениям по ключам, благодаря использованию хеш-таблиц, и широко используются в различных задачах программирования.
@programistica // #article5 769
👀 Книга: Автостопом по Python
⏺Выбираем интерпретатор
⏺Правильная установка Python
⏺Пишем отличный код
⏺Читаем отличный код
⏺Взаимодействие с пользователем
⏺Программные интерфейсы
И многое другое
@programistica // #doc
5 769
🖼️ Библиотека Python: PyAutoGUI
PyAutoGUI — это библиотека для автоматизации графического интерфейса пользователя, позволяющая программно управлять мышью и клавиатурой. Она предоставляет функции для перемещения курсора, нажатия клавиш, кликов мыши, а также для захвата и анализа скриншотов, что делает её полезной для создания сценариев автоматизации и тестирования.
⚙️ Пример использования
import pyautogui
import time
# Задержка для подготовки (например, чтобы переключиться на другое окно)
time.sleep(3)
# Перемещение курсора мыши в координаты (100, 100)
pyautogui.moveTo(100, 100, duration=1)
# Клик мышью в текущей позиции курсора
pyautogui.click()
# Напечатать текст "Hello, PyAutoGUI!"
pyautogui.write('Hello, PyAutoGUI!', interval=0.1)
# Нажать клавишу Enter
pyautogui.press('enter')
# Сделать скриншот экрана и сохранить его в файл
screenshot = pyautogui.screenshot()
screenshot.save('screenshot.png')
print("Скрипт выполнен успешно!")
Этот скрипт выполняет следующие действия:
⏺Ждет 3 секунды, чтобы вы могли переключиться на нужное окно.
⏺Перемещает курсор мыши в координаты (100, 100) за 1 секунду.
⏺Кликает мышью в текущей позиции курсора.
⏺Печатает текст "Hello, PyAutoGUI!" с интервалом 0.1 секунды между символами.
⏺Нажимает клавишу Enter.
⏺Делает скриншот экрана и сохраняет его в файл screenshot.png.
✔️ Установка
pip install pyautogui
⛓ Ссылка на документацию
@programistica // #Library5 769
🛡Первый компьютерный вирус
Первый компьютерный вирус, известный как "Creeper", был создан в начале 1970-х годов. Его разработал Боб Томас, работающий в компании BBN Technologies. Creeper был создан не с целью причинения вреда, а как эксперимент для исследования возможностей самовоспроизводящихся программ.
Creeper распространялся по сети ARPANET, предшественнице современного интернета. Он заражал компьютеры DEC PDP-10, работающие под управлением операционной системы TENEX. Когда вирус проникал в систему, на экране появлялось сообщение: "I'M THE CREEPER: CATCH ME IF YOU CAN" (Я Creeper: Поймай меня, если сможешь).
Чтобы бороться с Creeper, был создан первый антивирус, известный как "Reaper". Reaper был разработан для поиска и удаления Creeper с зараженных систем. Таким образом, история первого вируса также включает создание первого антивирусного программного обеспечения.
Хотя Creeper не наносил вреда системам, его появление ознаменовало начало эпохи компьютерных вирусов и антивирусного программного обеспечения, что стало важной частью истории кибербезопасности.
@programistica // #article
5 769
💻 Вопрос из собеседования: Как выполняется обработка исключений в Python?
Для обработки исключений Python предоставляет конструкцию из трех слов:
try, except и finally.
Синтаксис выглядит примерно так:
try:
# попробовать сделать это
except:
# если блок try не сработал, попробовать это
finally:
# всегда делать это
Ниже упрощенный пример такой конструкции. Здесь блок try терпит неудачу, поскольку мы не можем складывать целые числа со строками. Блок except устанавливает val = 10, а затем блок finally выводит complete:
try:
val = 1 + 'A'
except:
val = 10
finally:
print('complete')
print(val)
#=> complete
#=> 10
Надеюсь это поможет вам пройти собеседование на желаемую вами работу, удачи🔥🔥🔥@programistica // #jobs
5 769
🖼️ Библиотека Python: SpaCy
SpaCy — это мощная библиотека для обработки естественного языка (NLP) на Python, разработанная для быстрого и эффективного анализа текста. Она предоставляет инструменты для токенизации, лемматизации, распознавания именованных сущностей, синтаксического анализа и многих других задач, что делает её идеальной для разработки приложений, связанных с обработкой текстов.
⚙️ Пример использования
import spacy
# Загружаем английскую модель
nlp = spacy.load("en_core_web_sm")
# Пример текста
text = "Apple is looking at buying U.K. startup for $1 billion."
# Обработка текста
doc = nlp(text)
# Токенизация
print("Tokens:")
for token in doc:
print(f"{token.text} (lemma: {token.lemma_}, pos: {token.pos_}, tag: {token.tag_})")
# Распознавание именованных сущностей (NER)
print("\nNamed Entities:")
for ent in doc.ents:
print(f"{ent.text} ({ent.label_})")
# Синтаксический анализ
print("\nDependency Parsing:")
for token in doc:
print(f"{token.text} --> {token.dep_} --> {token.head.text}")
# Часть речи (POS) и лемматизация
print("\nPOS and Lemmatization:")
for token in doc:
print(f"{token.text} - POS: {token.pos_}, Lemma: {token.lemma_}")
# Распознавание предложений
print("\nSentences:")
for sent in doc.sents:
print(sent.text)
Этот код выполняет следующие задачи:
⏺Загружает английскую модель SpaCy.
⏺Обрабатывает пример текста.
⏺Выполняет токенизацию и выводит токены с их леммами, частями речи и тегами.
⏺Распознает именованные сущности (NER) и выводит их.
⏺Выполняет синтаксический анализ и выводит зависимости между словами.
⏺Выводит части речи и леммы для каждого токена.
⏺Разбивает текст на предложения и выводит их.
✔️ Установка
pip install spacy
python -m spacy download en_core_web_sm
⛓ Ссылка на документацию
@programistica // #Library5 769
PyPI
PyPI (Python Package Index) — это официальный репозиторий программного обеспечения для языка программирования Python. Он позволяет разработчикам публиковать свои пакеты, а пользователям — легко устанавливать и управлять этими пакетами.
Основные функции PyPI
⏺Публикация пакетов: Разработчики могут загружать свои пакеты на PyPI, делая их доступными для сообщества.
⏺Установка пакетов: Пользователи могут легко устанавливать пакеты из PyPI с помощью инструмента pip.
⏺Управление зависимостями: PyPI и pip помогают управлять зависимостями между различными пакетами.
Установка пакетов с PyPI
pip install имя_пакета
Установка конкретной версии пакета
pip install имя_пакета==версия
Обновление пакета
pip install --upgrade имя_пакета
Удаление пакета
pip uninstall имя_пакета
Публикация пакета на PyPI
Чтобы опубликовать свой пакет на PyPI, нужно выполнить несколько шагов:
⏺Создание структуры пакета: Убедитесь, что ваш проект имеет правильную структуру.
⏺Создание файла setup.py: Этот файл содержит метаданные о вашем пакете.
⏺Сборка пакета: Создание дистрибутивов вашего пакета.
⏺Загрузка на PyPI: Публикация пакета на PyPI.
Пример файла setup.py
from setuptools import setup, find_packages
setup(
name="my_package",
version="0.1.0",
author="Ваше Имя",
author_email="your.email@example.com",
description="Краткое описание вашего пакета",
long_description=open("README.md").read(),
long_description_content_type="text/markdown",
url="https://github.com/ваш_репозиторий",
packages=find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires='>=3.6',
)
Сборка и публикация пакета
👀Установка необходимых инструментов:
pip install setuptools wheel twine
👀Сборка пакета:
python setup.py sdist bdist_wheel
👀Загрузка на PyPI:
twine upload dist/*
Вас попросят ввести учетные данные для PyPI. После этого ваш пакет будет доступен для установки через pip.
PyPI — это важный инструмент для разработчиков и пользователей Python, который значительно упрощает процесс распространения и использования программного обеспечения. Благодаря PyPI и pip, установка и управление пакетами становятся быстрыми и удобными.
@programistica // #article5 769
👀 Книга: FastAPI веб-разработка
⏺Современная Всемирная паутина
⏺Обзор FastAPI
⏺Создание веб-сайта
⏺Асинхронность, конкурентность и обзор библиотеки Starlette
⏺Pydantic, подсказки типов и обзор моделей
И многое другое
@programistica // #doc
5 769
💻 Первый программист
Ада Лавлейс, полное имя Августа Ада Кинг, графиня Лавлейс (1815–1852), была английской математиком и писательницей, которая вошла в историю как первый в мире программист. Она была дочерью поэта лорда Байрона и Анны Изабеллы Милбэнк. Несмотря на поэтическое наследие, Ада проявила большой интерес к математике и науке, что было необычно для женщины того времени.
Ее вклад в программирование связан с работой над аналитической машиной Чарльза Бэббиджа. Аналитическая машина представляла собой проект механического компьютера, который, если бы был построен, мог бы выполнять любые вычисления, заданные пользователем. В 1842–1843 годах Ада перевела на английский язык статью итальянского математика Луиджи Менабреа о машине Бэббиджа. Однако она не просто перевела статью, но и добавила к ней свои собственные комментарии и заметки, которые в три раза превышали объем оригинального текста.
В этих заметках (известных как "Notes") Ада описала алгоритм для вычисления чисел Бернулли с помощью аналитической машины. Этот алгоритм считается первой в мире программой для компьютера. Она также предвидела, что машины могут использоваться не только для вычислений, но и для создания музыки, графики и других форм искусства, что делает ее видение компьютеров удивительно современным.
Лавлейс также ввела понятие "петли" и "ветвления" в программировании, что является основой для современных алгоритмов. Она понимала, что машина может манипулировать символами и выполнять сложные задачи, если ей дать правильные инструкции.
Хотя аналитическая машина Бэббиджа так и не была построена при жизни ни его, ни Ады Лавлейс, ее работы заложили фундамент для будущего развития компьютерных наук. В 1980 году Министерство обороны США назвало новый язык программирования "Ada" в ее честь, признавая ее вклад в развитие этой области.
Таким образом, Ада Лавлейс не только стала первым программистом, но и предсказала многие аспекты использования компьютеров, которые стали реальностью только в XX и XXI веках.
@programistica // #article
5 769
Декораторы в python
Декораторы — это мощный инструмент, который позволяет модифицировать поведение функций или методов без изменения их исходного кода. Декораторы часто используются для логирования, контроля доступа, измерения времени выполнения и других задач.
Основы декораторов
Декоратор — это функция, которая принимает другую функцию в качестве аргумента и возвращает новую функцию, которая обычно расширяет поведение оригинальной функции.
Пример простого декоратора
Рассмотрим простой пример декоратора, который будет выводить сообщение перед и после вызова функции:
def my_decorator(func):
def wrapper():
print("Что-то происходит до вызова функции.")
func()
print("Что-то происходит после вызова функции.")
return wrapper
@my_decorator
def say_hello():
print("Привет!")
say_hello()
Описание кода:
⏺Декоратор my_decorator: Эта функция принимает другую функцию func и возвращает новую функцию wrapper.
⏺Функция wrapper: Внутри этой функции мы добавляем дополнительное поведение перед и после вызова func.
⏺Использование декоратора: С помощью синтаксиса @my_decorator мы применяем декоратор к функции say_hello.
⏺Вызов say_hello: Когда мы вызываем say_hello, фактически выполняется функция wrapper.
Пример декоратора с аргументами функции
Декораторы могут работать и с функциями, которые принимают аргументы:
def my_decorator(func):
def wrapper(*args, **kwargs):
print("Что-то происходит до вызова функции.")
result = func(*args, **kwargs)
print("Что-то происходит после вызова функции.")
return result
return wrapper
@my_decorator
def greet(name):
print(f"Привет, {name}!")
greet("Анна")
Описание кода:
⏺Функция wrapper: Используем *args и **kwargs для передачи всех аргументов и ключевых словарных аргументов в func.
⏺Возврат результата: Если функция func возвращает значение, мы возвращаем его из wrapper.
Пример использования декораторов для логирования
Рассмотрим пример декоратора, который будет логировать вызовы функций:
import time
def log_decorator(func):
def wrapper(*args, **kwargs):
print(f"Вызов функции {func.__name__} с аргументами {args} и {kwargs}")
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Функция {func.__name__} выполнена за {end_time - start_time:.4f} секунд")
return result
return wrapper
@log_decorator
def add(a, b):
return a + b
@log_decorator
def multiply(a, b):
return a * b
print(add(3, 5))
print(multiply(4, 6))
Описание кода:
⏺Декоратор log_decorator: Логирует вызовы функций и измеряет время их выполнения.
⏺Функции add и multiply: Применяем декоратор к этим функциям для получения логов и времени выполнения.
Декораторы — это мощный механизм, который позволяет изменять поведение функций и методов гибким и удобным способом. Они широко используются в различных библиотеках и фреймворках Python для решения множества задач, таких как логирование, контроль доступа, кеширование и многое другое.
@programistica // #article5 769
Прокачайте навыки в Python-разработке на бесплатном практическом мини-курсе! Минимум скучной теории — больше мощной практики на реальных задачах разработчиков. После прохождения добавите 4 проекта в портфолио!
Записаться и узнать подробную программу: https://epic.st/ivCAlv?erid=2Vtzqwb99VT
Кому подойдёт курс:
— Тем, кто хочет карьерных перемен
— Тем, кто уже знает основы Python
— Тем, кто хочет попасть в IT, но сомневается
В финале мини-курса вас ждёт прямой эфир с экспертом Анастасией Борневой — руководителем направления по исследованию данных в «Сбере». В прямом эфире она поделится профессиональными секретами, разберёт ваши работы и ответит на вопросы.
Вас ждут крутые подарки: чек-листы, гайды и другие бонусы. Эти материалы пригодятся в работе и помогут больше узнать о профессии.
Откройте новые возможности!
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
5 769
💻 Вопрос из собеседования: Приведите пример генератора словарей (dict comprehension)
Ниже мы создадим словарь с буквами алфавита в качестве ключей и индексами в качестве значений:
# создаем список букв
import string
list(string.ascii_lowercase)
alphabet = list(string.ascii_lowercase)
# генерация словаря
d = {val:idx for idx,val in enumerate(alphabet)}
d
#=> {'a': 0,
#=> 'b': 1,
#=> 'c': 2,
#=> ...
#=> 'x': 23,
#=> 'y': 24,
#=> 'z': 25}
Надеюсь это поможет вам пройти собеседование на желаемую вами работу, удачи🔥🔥🔥@programistica // #jobs
