Узнаём ip адрес своего компьютера
Этот код использует библиотеку requests для отправки HTTP-запроса к веб-сервису ipify, который предоставляет API для определения публичного IP-адреса пользователя. Код написан в форме функции get_public_ip, что делает его удобным для повторного использования.
Использование блока try-except обеспечивает обработку исключений, которые могут возникнуть при запросе (например, проблемы с подключением к интернету). Если запрос успешен, функция возвращает IP-адрес, иначе возвращает сообщение об ошибке.
Этот код использует библиотеку requests для отправки HTTP-запроса к веб-сервису ipify, который предоставляет API для определения публичного IP-адреса пользователя. Код написан в форме функции get_public_ip, что делает его удобным для повторного использования.
Использование блока try-except обеспечивает обработку исключений, которые могут возникнуть при запросе (например, проблемы с подключением к интернету). Если запрос успешен, функция возвращает IP-адрес, иначе возвращает сообщение об ошибке.
PyQt6
PyQt6 — это библиотека Python для создания приложений с графическим интерфейсом (GUI) с помощью инструментария Qt. Qt - это мощный и зрелый инструментарий для разработки GUI, который используется в широком спектре приложений, от настольных приложений до мобильных приложений и веб-приложений. PyQt6 позволяет использовать все возможности Qt в Python.
Чтобы начать работу с PyQt6, необходимо установить библиотеку. Для этого можно использовать менеджер пакетов, такой как pip:
После установки библиотеки можно начать писать код для создания приложения с GUI.
PyQt6 — это библиотека Python для создания приложений с графическим интерфейсом (GUI) с помощью инструментария Qt. Qt - это мощный и зрелый инструментарий для разработки GUI, который используется в широком спектре приложений, от настольных приложений до мобильных приложений и веб-приложений. PyQt6 позволяет использовать все возможности Qt в Python.
Чтобы начать работу с PyQt6, необходимо установить библиотеку. Для этого можно использовать менеджер пакетов, такой как pip:
pip install PyQt6
После установки библиотеки можно начать писать код для создания приложения с GUI.
👍2
PsychoPy
PsychoPy — это программное обеспечение для создания экспериментов в области психологии, нейронауки и экспериментальной психиатрии с использованием языка программирования Python. Он предоставляет инструменты для создания различных видов стимулов, управления временем, сбора данных и анализа результатов.
В примере на картинке мы создаем окно, текстовый стимул, отображаем его, ждем 2 секунды и затем закрываем окно. PsychoPy предоставляет богатый набор функций для создания более сложных экспериментов, таких как представление изображений, воспроизведение звуков, сбор данных о времени реакции и многое другое.
PsychoPy — это программное обеспечение для создания экспериментов в области психологии, нейронауки и экспериментальной психиатрии с использованием языка программирования Python. Он предоставляет инструменты для создания различных видов стимулов, управления временем, сбора данных и анализа результатов.
В примере на картинке мы создаем окно, текстовый стимул, отображаем его, ждем 2 секунды и затем закрываем окно. PsychoPy предоставляет богатый набор функций для создания более сложных экспериментов, таких как представление изображений, воспроизведение звуков, сбор данных о времени реакции и многое другое.
Как работает хэш-таблица в Python (dict):
🔹 Хэширование - при добавлении элемента вызывается
🔹 Коллизии - если два ключа выдают одинаковый хэш, Python сохраняет их в одну "ячейку" (обычно в виде списка). Это называется метод цепочек.
🔹 Поиск - при доступе по ключу Python вычисляет его хэш и ищет значение в нужной ячейке. Быстро и эффективно.
⚡️ Словари — одна из причин, почему Python так удобен.
🔹 Хэширование - при добавлении элемента вызывается
hash(key), и получается целое число - хэш ключа.🔹 Коллизии - если два ключа выдают одинаковый хэш, Python сохраняет их в одну "ячейку" (обычно в виде списка). Это называется метод цепочек.
🔹 Поиск - при доступе по ключу Python вычисляет его хэш и ищет значение в нужной ячейке. Быстро и эффективно.
⚡️ Словари — одна из причин, почему Python так удобен.
🔥1
🐍 Python + Emojis = читаемый код?
Знаешь ли ты, что Python позволяет использовать emoji как имена переменных?
Да, это работает! Python видит emoji как обычные юникод-символы. Конечно, так писать код в проде - плохая идея, но для фана или внутренних инструментов почему бы и нет?
⚠️ Внимание: поддержка может зависеть от шрифта и среды (IDE, консоль и т.д.).
Знаешь ли ты, что Python позволяет использовать emoji как имена переменных?
🔥 = 100
💧 = 20
print(🔥 - 💧) # 80
Да, это работает! Python видит emoji как обычные юникод-символы. Конечно, так писать код в проде - плохая идея, но для фана или внутренних инструментов почему бы и нет?
⚠️ Внимание: поддержка может зависеть от шрифта и среды (IDE, консоль и т.д.).
JPype: работаем с Java из Python
JPype позволяет запускать Java-код прямо из Python, подключая JVM и используя Java-классы как обычные Python-объекты.
📌 Примеры применения:
– Подключение Java-библиотек
– Интеграция с существующими Java-системами
– Запуск JVM прямо из Python-кода
🔧 Результат:
Полезный инструмент, если нужен доступ к мощным Java-библиотекам без отказа от Python.
JPype позволяет запускать Java-код прямо из Python, подключая JVM и используя Java-классы как обычные Python-объекты.
📌 Примеры применения:
– Подключение Java-библиотек
– Интеграция с существующими Java-системами
– Запуск JVM прямо из Python-кода
import jpype
jpype.startJVM()
String = jpype.JClass("java.lang.String")
javaString = String("Hello from Java!")
print(javaString.toUpperCase())
jpype.shutdownJVM()
🔧 Результат:
HELLO FROM JAVA!Полезный инструмент, если нужен доступ к мощным Java-библиотекам без отказа от Python.
Метод missing
Метод missing — это магический метод, который вызывается, когда попытка доступа к несуществующему ключу в словаре. По умолчанию метод
Общая форма метода missing выглядит следующим образом:
Аргумент
Метод missing — это магический метод, который вызывается, когда попытка доступа к несуществующему ключу в словаре. По умолчанию метод
missing бросает исключение KeyError. Однако его можно переопределить, чтобы обеспечить другое поведение.Общая форма метода missing выглядит следующим образом:
def __missing__(self, key):
# ...
Аргумент
self представляет собой экземпляр словаря, в котором произошло обращение к несуществующему ключу. Аргумент key представляет собой сам несуществующий ключ.🔁 Бесконечный for без while
Можно ли сделать бесконечный цикл без
Почему это работает?
👉
Поскольку
Такой трюк не только работает, но и удивляет тех, кто видит это впервые 👀
Можно ли сделать бесконечный цикл без
while True? Конечно! Вот один из способов:for _ in iter(int, 1):
print("Работаю бесконечно...")
Почему это работает?
👉
iter(int, 1) создаёт итератор, который вызывает int() до тех пор, пока результат не станет равен 1.Поскольку
int() без аргументов всегда возвращает 0, условие никогда не выполнится - цикл бесконечен.Такой трюк не только работает, но и удивляет тех, кто видит это впервые 👀
👍4
pywhatkit
Открывает сайты, пишет в WhatsApp, рисует ASCII, ищет в Google и даже управляет клавиатурой.
🔍 1. Поиск в Google
🔹 Откроется вкладка браузера с результатами поиска.
---
💬 2. Отправка сообщения в WhatsApp
🔹 Отправит сообщение в WhatsApp в 15:30. Работает только с установленным WhatsApp Web.
⚠️ Нужно запускать заранее — за 1–2 минуты до указанного времени.
---
🖼 3. Преобразование изображения в ASCII-арт
🔹 Создаст файл
---
🖱 4. Управление клавиатурой
🔹 Отправляет текст в указанное активное окно (например, блокнот). Подходит для автоматизации.
---
🧠 5. Случайный факт
🔹 Выведет краткую справку из Википедии (3 строки).
---
📦 Установка:
Открывает сайты, пишет в WhatsApp, рисует ASCII, ищет в Google и даже управляет клавиатурой.
🔍 1. Поиск в Google
import pywhatkit as kit
kit.search("как стать Python-разработчиком")
🔹 Откроется вкладка браузера с результатами поиска.
---
💬 2. Отправка сообщения в WhatsApp
import pywhatkit as kit
kit.sendwhatmsg("+79991234567", "Привет с Python 👋", 15, 30)
🔹 Отправит сообщение в WhatsApp в 15:30. Работает только с установленным WhatsApp Web.
⚠️ Нужно запускать заранее — за 1–2 минуты до указанного времени.
---
🖼 3. Преобразование изображения в ASCII-арт
kit.image_to_ascii_art("cat.jpg", "cat_ascii")🔹 Создаст файл
cat_ascii.txt с артом из символов.---
🖱 4. Управление клавиатурой
kit.send_keys("Notepad", "Hello from Python!")🔹 Отправляет текст в указанное активное окно (например, блокнот). Подходит для автоматизации.
---
🧠 5. Случайный факт
kit.info("Python programming", lines=3)🔹 Выведет краткую справку из Википедии (3 строки).
---
📦 Установка:
pip install pywhatkit
Модуль doctest
Модуль doctest — это легкий фреймворк для тестирования, который позволяет автоматизировать тестирование кода, используя его документацию. Модуль ищет в документации примеры кода, которые можно выполнить, и проверяет, соответствуют ли результаты ожидаемым.
Как использовать doctest?
Чтобы использовать
Затем, в документации вашей функции или класса, вы можете добавить примеры кода, которые хотите протестировать. Примеры должны начинаться с ключевого слова >>> и заканчиваться ожидаемым результатом.
Чтобы запустить тесты
Модуль doctest — это легкий фреймворк для тестирования, который позволяет автоматизировать тестирование кода, используя его документацию. Модуль ищет в документации примеры кода, которые можно выполнить, и проверяет, соответствуют ли результаты ожидаемым.
Как использовать doctest?
Чтобы использовать
doctest, необходимо импортировать его в свой код:import doctest
Затем, в документации вашей функции или класса, вы можете добавить примеры кода, которые хотите протестировать. Примеры должны начинаться с ключевого слова >>> и заканчиваться ожидаемым результатом.
Чтобы запустить тесты
doctest, вы можете использовать функцию doctest.testmod(). Если тесты пройдут успешно, ничего не будет напечатано. Если тесты потерпят неудачу, будет напечатано сообщение об ошибке, указывающее на причину неудачи.rich - красивый вывод в консоли
Позволяет делать форматирование, таблицы, прогресс-бары, markdown и даже графики прямо в терминале.
🎨 1. Цветной и стильный текст
🟣 Жирный текст с цветами - как Markdown, но для терминала.
---
📊 2. Прогресс-бар
🔹 Удобно для загрузок, циклов, задач.
---
📋 3. Таблица
🧾 Создаёт красивые ASCII-таблицы - читаемо и стильно.
---
📝 4. Markdown прямо в консоли
---
📦 Установка:
Позволяет делать форматирование, таблицы, прогресс-бары, markdown и даже графики прямо в терминале.
🎨 1. Цветной и стильный текст
from rich import print
print("[bold magenta]Hello[/bold magenta], [green]Pythonistas![/green] 🐍")
🟣 Жирный текст с цветами - как Markdown, но для терминала.
---
📊 2. Прогресс-бар
from rich.progress import track
import time
for step in track(range(10), description="Обработка..."):
time.sleep(0.2)
🔹 Удобно для загрузок, циклов, задач.
---
📋 3. Таблица
from rich.table import Table
from rich.console import Console
table = Table(title="Список задач")
table.add_column("ID", justify="right", style="cyan")
table.add_column("Описание", style="magenta")
table.add_column("Статус", style="green")
table.add_row("1", "Сделать кофе", "☕️ Готово")
table.add_row("2", "Написать скрипт", "💻 В процессе")
table.add_row("3", "Отдохнуть", "😴 Запланировано")
console = Console()
console.print(table)
🧾 Создаёт красивые ASCII-таблицы - читаемо и стильно.
---
📝 4. Markdown прямо в консоли
from rich.console import Console
from rich.markdown import Markdown
md = Markdown("""
# Заголовок
**Жирный текст**
- Пункт 1
- Пункт 2
""")
Console().print(md)
---
📦 Установка:
pip install rich
12 небольших фишек для улучшения твоего кода
1. Обмен значений
1. Обмен значений
x, y = 1, 22. Получение строки из списка
x, y = y, x
a_list = [‘I’, ‘like’, ‘python’, ‘programming’]3. Разбиение строки на список
a_string = “ “.join(a_list)
a_string = ‘I like python programming’4. Инициализация листа каким либо значением
a_list = a_string.split()
[0]*1000 # лист, заполненный 1000 нулями5. Слияние словарей
[1]*1000 # лист, заполненный 1000 единицами
x = {‘a’:1, ‘b’:2}
y = {‘c’:3, ‘d’:4}
z = {**x, **y}
6. Переворачивание строкиa = ‘My string’7. Возврат нескольких переменных из функции
a = a[::-1]
def test(x,y):8. Итерирование по словарю
return x,y
a,b = test(1,2)
a_dict = {‘a’:1, ‘b’:2, ’c’:3}
for k, v in a_dict.items():
print(‘{0}:{1}’.format(k, v))
9. Инициализация пустых контейнеровa_list = list()10. Удаление символов в конце строки
a_dict = dict()
a_set = set()
a_tuple = tuple()
my_string = ‘My string///‘11. Проверка занимаемой объектом памяти
my_string.strip(‘/‘)
import sys12. Нахождение наиболее частого элемента в списке
x = 1
print(sys.getsizeof(x))
a_list = [1, 2, 3, 1, 1, 4, 1, 4, 4, 1]
print(max(set(a_list), key=a_list.count))
❤1👍1👎1
Что такое
Каждый раз, когда мы импортируем код, он весь выполняется точно так же, словно мы его просто запустили. Чтобы избежать странного поведения, как на картинке, стоит использовать
Переменная получает значение '
__name__ ?Каждый раз, когда мы импортируем код, он весь выполняется точно так же, словно мы его просто запустили. Чтобы избежать странного поведения, как на картинке, стоит использовать
__name__.Переменная получает значение '
__main__', если программу запустили напрямую (python file.py). Если же файл импортировали как модуль, он получает своё название.Фабричный метод
Фабричный метод используется как средство предоставления фабричных интерфейсов для создания объектов.
Они позволяют ослабить связи в коде и упростить его: чаще всего он используется, если вам нужно создать объект по какому-то условию.
Таким образом, мы перемещаем большое количество if/elif/else-кода в отдельный метод.
Фабричный метод используется как средство предоставления фабричных интерфейсов для создания объектов.
Они позволяют ослабить связи в коде и упростить его: чаще всего он используется, если вам нужно создать объект по какому-то условию.
Таким образом, мы перемещаем большое количество if/elif/else-кода в отдельный метод.
📌Функция sum() в python3
Как бы вы решили задачу получения суммы элементов
списка без обхода элементов в цикле?
Это можно сделать с помощью стандартной функции sum():
Cинтакс функции sum().
Параметры sum():
iterable - итерируемые типы (list , dict , tuple, и.т.д.)
start - (необезательно) - значение этого параметра прибавляется к уже готовой сумме элементов iterable.По умолчанию значение этого парметра 0.
Возвращаемое значение из sum():
sum() возвращает сумму start и элементов iterable.
Пример:
✅Результат:
🔴Примечания:
Если вам нужно использовать sum() с floating-point элементами iterable с правильной точностью после запятой , до использования
Если вам нужно соединить(concatenate) элементы iterable (элементы должны быть string), тогда вы можете использовать метод join()
Пример:
✅Результат:
Как бы вы решили задачу получения суммы элементов
списка без обхода элементов в цикле?
Это можно сделать с помощью стандартной функции sum():
Cинтакс функции sum().
sum(iterable, start)Параметры sum():
iterable - итерируемые типы (list , dict , tuple, и.т.д.)
start - (необезательно) - значение этого параметра прибавляется к уже готовой сумме элементов iterable.По умолчанию значение этого парметра 0.
Возвращаемое значение из sum():
sum() возвращает сумму start и элементов iterable.
Пример:
numbers = [1,5,5]#парметр start передается со значением по умолчанию(0).numbers_sum = sum (numbers);print (numbers_sum)# парметр start передается со значением 7.numbers_sum = sum (numbers, 7)print (numbers_sum)✅Результат:
1118🔴Примечания:
Если вам нужно использовать sum() с floating-point элементами iterable с правильной точностью после запятой , до использования
sum(iterable , start) , нужно вместе c import math добавить следующую строку. math.fsum(iterable).Если вам нужно соединить(concatenate) элементы iterable (элементы должны быть string), тогда вы можете использовать метод join()
Пример:
myTuple = ("Python", "Lounge", "is", "the","best")x = " ".join(myTuple)print (x)✅Результат:
Python Lounge is the bestДекораторы
Это функции, которые меняют поведение других функций, не меняя код внутри них.
Сами по себе декораторы составляют вызываемый объект (функция, класс с
Это функции, которые меняют поведение других функций, не меняя код внутри них.
Сами по себе декораторы составляют вызываемый объект (функция, класс с
__call__), который возвращает другой вызываемый объект.@wraps используется для изменения некоторых значения (__name__, __doc__) на значения функции, с которой мы работаем, а не декоратора.Функция exit создана для удобства работы в интерактивном режиме, однако не рекомендуется использовать её внутри скриптов. По факту она также просто поднимают исключение, и при попытке вызова без скобок напишут подсказку о правильном способе выхода из интерпретатора:
>>> exitИспользовать sys.exit стоит потому, что эта функция лежит в стандартном модуле и будет всегда там доступна. Также это довольно явный способ выразить своё желание завершить программу.
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()
nameless@pycoders:~$
import sys
try:
# code
except:
sys.exit()
👍2
Разница между is и ==
Каждый объект хранится в памяти и имеет свой номер, по которому можно его найти. Этот номер можно получить с помощью функции
is занимается сравниванием этих самых адресов. В то время как == вызывает функцию
Представьте куб, а потом ещё один такой же. Они одинаковые, но это два абсолютно разных объекта. Также и в программировании.
Каждый объект хранится в памяти и имеет свой номер, по которому можно его найти. Этот номер можно получить с помощью функции
id().is занимается сравниванием этих самых адресов. В то время как == вызывает функцию
__eq__ и предназначения для сравнения значений класса.Представьте куб, а потом ещё один такой же. Они одинаковые, но это два абсолютно разных объекта. Также и в программировании.
❤1👍1🤨1
💡Лайфхаки и памятки для питонистов
👉Вывести в консоль 2 или более списков одновременно.
Output:
👉Превратить строку в список.
Output:
👉Превратить список списков в один список.
Output:
👉Раздробить список в группы.
Output:
👉Вывести в консоль 2 или более списков одновременно.
>>>list1 = [1, 3, 5, 7]>>>list2 = [2, 4, 6, 8]>>>for a, b in zip(list1, list2):...print (a, b)Output:
>>>1 2>>>3 4>>>5 6>>>7 8👉Превратить строку в список.
>>>formatted_list = list(map(int, input().split()))>>>print (formatted_list)Output:
>>>[1, 2, 3]👉Превратить список списков в один список.
>>>import itertools>>>list1 = [[1,2], [3,4], [5,6]]>>>lst = list(itertools.chain.from_iterable(list1))Output:
>>>[1, 2, 3, 4, 5, 6]👉Раздробить список в группы.
>>>list1 = ['Sun', 'Flowers', 'Peoples', 'Animals', 'Day', 'Night']>>>partition = list(zip(*[iter(list1)] * 2))>>>print(partition)Output:
>>>[('Sun', 'Flowers'), ('Peoples', 'Animals'), ('Day', 'Night')]