Простейший пример когда код завершается с ошибкой, так как невозможно сравнить строку с числом
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤2👍2😁2
a = frozenset([1, 2, 3])
b = frozenset([3, 4, 5])
print(a & b) # пересечение → frozenset({3})
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2
— логирование и сбор метрик
— прокси для сетевых запросов
— сервис Mesh (например, Istio Envoy)
— мониторинг и безопасность
— основной сервис остаётся «чистым» и сосредоточенным только на бизнес-логике
— независимое обновление и масштабирование sidecar
— одинаковый подход к инфраструктуре (единые логеры, агенты метрик и т.д.)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2🔥2
Можно использовать для динамического доступа к переменным по имени.
x = 42
name = "Python"
print(globals()["x"]) # 42
print(globals()["name"]) # Python
Полезно для отладки, метапрограммирования и работы с динамическими именами, но в обычном коде лучше использовать напрямую
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥2
import jmespath
jmespath.search('foo.bar', {'foo': {'bar': 'baz'}})
# output: 'baz'
jmespath.search('foo.*.name', {'foo': {'bar': {'name': 'one'}, 'baz':
{'name': 'two'}}})
# output: ['one', 'two']
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥2
print(2**1000)
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
Это очень удобно для таких областей, как криптография или научные вычисления, где часто требуется работа с очень большими числами.
Однако важно помнить, что хотя Python может обрабатывать такие большие числа, это может повлиять на производительность при выполнении операций с ними. Поэтому, если вам не нужна такая высокая точность, лучше использовать стандартные типы данных.
В целом, эта особенность Python делает его очень мощным инструментом для работы с целыми числами любого размера.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3🔥2
*
-h или --help: Выводит справку по доступным флагам.*
-V или --version: Выводит номер версии Python.*
-m <module>: Запускает модуль как скрипт (например, python -m venv venv).*
-c <command>: Выполняет указанную команду Python (например, python -c "print('Hello, World!')").*
-i: Включает интерактивный режим REPL после выполнения скрипта.*
-O: Включает оптимизацию байт-кода (удаляет операторы assert и любой код, зависящий от значения __debug__).*
-OO: Более агрессивная оптимизация, удаляющая docstrings.*
-B: Отключает создание файлов .pyc (с компилированным байт-кодом).*
-W: Контролировать частоту вывода предупреждений.Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥1👌1
1.
string.ascii_letters: Содержит все буквы английского алфавита (как заглавные, так и строчные).2.
string.digits: Включает все десятичные цифры от 0 до 9.3.
string.hexdigits: Содержит шестнадцатеричные цифры (0-9 и a-f, A-F).4.
string.octdigits: Включает восьмеричные цифры (0-7).5.
string.punctuation: Содержит все знаки пунктуации.6.
string.whitespace: Включает все пробельные символы (пробелы, табуляции и переносы строк).import string
# Функция проверяет, состоит ли строка только из букв
def is_alpha(s):
return all(char in string.ascii_letters for char in s)
# Тестируем функцию
print(is_alpha("HelloWorld")) # Вывод: True
print(is_alpha("Hello World!")) # Вывод: False
Константы из модуля string значительно упрощают обработку строк и могут быть использованы в различных алгоритмах, таких как валидация ввода, фильтрация символов и т.д.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥2
import pendulum
# Создание даты
date = pendulum.datetime(2023, 10, 5)
# Форматирование даты
formatted_date = date.format('YYYY-MM-DD')
print(formatted_date) # Вывод: 2023-10-05
Pendulum значительно упрощает работу с временными зонами. Пример создания даты в одной временной зоне и её преобразования в другую:
# Создание даты в временной зоне 'Europe/Moscow'
moscow_time = pendulum.datetime(2023, 10, 5, tz='Europe/Moscow')
print(moscow_time) # Вывод: 2023-10-05T00:00:00+03:00
# Преобразование в другую временную зону
ny_time = moscow_time.in_timezone('America/New_York')
print(ny_time) # Вывод: 2023-10-04T17:00:00-04:00
Pendulum предоставляет широкий набор методов для выполнения различных операций с датами. Пример добавления и вычитания временных интервалов:
# Создание даты
date = pendulum.datetime(2023, 10, 5)
# Добавление 5 дней
new_date = date.add(days=5)
print(new_date) # Вывод: 2023-10-10T00:00:00+00:00
# Вычитание 2 часов
new_date = date.subtract(hours=2)
print(new_date) # Вывод: 2023-10-04T22:00:00+00:00
add и subtract вы можете легко выполнять арифметические операции с датами, что делает работу с временными интервалами очень удобной. Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥3
Это означает, что вся история обеих веток сохраняется, и создается так называемый "слияние" (merge commit).
Это создаёт новое основание для вашей ветки и делает историю более линейной, очищая её от избыточных merge-коммитов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3❤2
Также в Python имеется тип данных memoryview, предоставляющий доступ к внутренним данным объекта, который поддерживает буферный протокол, без копирования.
Для создания байтовых объектов можно использовать байтовые литералы (синтаксис схож со строковыми литералами, за исключением того, что добавляется префикс "b").
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4❤2
1. Распаковка в несколько переменных:
a, b, c = 1, 2, 3
# a = 1, b = 2, c = 3
2. Распаковка посимвольно в строки:
a, b = "12"
# a = '1', b = '2'
3. Распаковка с использованием звёздочки (
*):a, *b = 1, 2, 3
# a = 1, b = [2, 3]
4. Распаковка в переменную со звёздочкой (
*):a, *b, c = 1, 2, 3, 4
# a = 1, b = [2, 3], c = 4
5. Игнорирование значений при распаковке:
a, _, b = 7, 8, 9
# a = 7, b = 9 (значение 8 игнорируется)
Пропуск значений, которые не нужны при присвоении.
Можно использовать любые итерируемые объекты, такие как списки, кортежи, строки, объекты, поддерживающие итерацию и даже функция range():
- Список:
a, b, c = [4, 5, 6]
# a = 4, b = 5, c = 6
- Кортеж:
x, y = (10, 20)
# x = 10, y = 20
- Строка:
char1, char2, char3 = "xyz"
# char1 = 'x', char2 = 'y', char3 = 'z'
- Использование range():
a, b, c = range(1, 4)
# a = 1, b = 2, c = 3
Распаковка значений в Python - удобный и эффективный способ присваивания значений переменным из итерируемых объектов, делая код более читаемым и компактным. Это дает гибкость при работе с данными различных типов и структур.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4⚡1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥2
- await — ждёт, пока задача завершится.
- loop.create_task() — запускает задачу в фоне, не блокируя выполнение остального кода.
import asyncio
async def task(name):
print(f"Начал {name}")
await asyncio.sleep(2)
print(f"Закончил {name}")
async def main():
t1 = asyncio.create_task(task("Задача 1"))
t2 = asyncio.create_task(task("Задача 2"))
print("Обе задачи запущены!")
await t1
await t2
asyncio.run(main())
обе задачи выполняются одновременно, а не по очереди.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3🤣3🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥2
GeoPandas расширяет функциональность pandas, добавляя поддержку геометрических типов данных. Это позволяет эффективно работать с пространственными данными, выполнять геометрические операции и визуализировать результаты.
import geopandas as gpd
# Чтение геоданных
gdf = gpd.read_file('path/to/your/geodata.shp')
# Базовые операции
print(gdf.head())
print(gdf.crs) # Система координат
Визуализация данных
import matplotlib.pyplot as plt
gdf.plot()
plt.title('Визуализация геоданных')
plt.show()
Выполнение геометрических операций, таких как буферизация:
buffered = gdf.geometry.buffer(1) # Создание буфера в 1 единицу
Объединение двух наборов геоданных на основе их пространственных отношений:
cities = gpd.read_file('cities.shp')
countries = gpd.read_file('countries.shp')
cities_with_countries = gpd.sjoin(cities, countries, how="inner", predicate="within")Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2🔥2
Что выдаст код выше❔
Anonymous Quiz
7%
[2, 3, 4, 1]
21%
[1, 2, 3, 4]
6%
[1, 4, 3, 2]
67%
[4, 3, 2, 1]
❤3👍2🤔2🤓2👀2🤯1
Срез x[::-1] инвертирует список, Применение его трижды возвращает исходный порядок.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2🔥2
Функция all принимает на вход итерируемый объект (например, список) и возвращает True, если все его элементы являются истинными (или, если итерируемый объект пустой). Например:
numbers = [1, 2, 3, 4]
print(all(numbers)) # Выводит: True
Функция any, как и all, принимает на вход итерируемый объект, но возвращает True, если хоть один из его элементов является истинным. Если итерируемый объект пустой, функция any возвращает False. Например:
numbers = [0, 0, 1, 0]
print(any(numbers)) # Выводит: True
Функции all и any можно использовать вместе, чтобы проверить сложные условия. Например, мы можем проверить, все ли элементы в списке положительные и есть ли среди них хоть одно четное число:
numbers = [1, 2, 3, 4]
print(all(num > 0 for num in numbers) and any(num % 2 == 0 for num in numbers)) # Выводит: True
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥3