*
-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
👍7🔥3❤2
Также в Python имеется тип данных memoryview, предоставляющий доступ к внутренним данным объекта, который поддерживает буферный протокол, без копирования.
Для создания байтовых объектов можно использовать байтовые литералы (синтаксис схож со строковыми литералами, за исключением того, что добавляется префикс "b").
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4❤2💯1
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❤4🔥2
Что выдаст код выше❔
Anonymous Quiz
6%
[2, 3, 4, 1]
23%
[1, 2, 3, 4]
5%
[1, 4, 3, 2]
65%
[4, 3, 2, 1]
❤4👍3🤔2🤓2👀2🤯1
Срез x[::-1] инвертирует список, Применение его трижды возвращает исходный порядок.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4🔥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
👍7❤3🔥3
—Возбуждение существующих исключений: Вы можете использовать
raise без каких-либо параметров в блоке except, чтобы повторно вызвать текущее исключение. —Создание собственных исключений: Вы можете создать или вызвать собственное исключение, создав объект исключения и передав его в
raise.def divide(a, b):
if b == 0:
raise ValueError("Деление на ноль невозможно.")
return a / b
try:
result = divide(10, 0)
except ValueError as e:
print(f"Ошибка: {e}")
divide вызывает исключение ValueError, если второй аргумент равен нулю. В блоке try мы пытаемся выполнить деление, и если возникает ошибка, мы перехватываем её и выводим сообщение об ошибке.Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥3💯1
Функциональное программирование - это парадигма, в которой процесс вычисления рассматривается как вычисление математических функций. Основная идея заключается в том, чтобы избегать изменяемого состояния и мутаций данных.
Функциональное программирование становится все популярнее благодаря своим преимуществам в читаемости, тестируемости и параллельном выполнении. Хотя оно может потребовать некоторого времени для освоения, инвестиции в изучение ФП могут значительно улучшить качество вашего кода и эффективность разработки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1
Казалось бы, Python — язык высокого уровня с автоматическим управлением памятью. Зачем нам вообще беспокоиться об этом? Но, друзья мои, даже в Пайтоне память не бесконечна. Особенно когда вы работаете с большими данными или создаете высоконагруженные приложения.
memory_profiler — это как швейцарский нож для анализа памяти. Вот пример его использования:
from memory_profiler import profile
@profile
def my_func():
a = [1] * (10 ** 6)
b = [2] * (2 * 10 ** 7)
del b
return a
if __name__ == '__main__':
my_func()
python -m memory_profiler script.py, и вы увидите подробный отчет о использовании памяти. Красота, правда?Если memory_profiler — это швейцарский нож, то line_profiler — это микроскоп. Он покажет вам использование памяти построчно:
@profile
def my_func():
a = [1] * (10 ** 6)
b = [2] * (2 * 10 ** 7)
del b
return a
my_func()
kernprof -l -v script.py, и вы увидите, какая строчка сколько памяти съедает.objgraph — это как рентген для вашего кода. Он позволяет визуализировать объекты в памяти:
import objgraph
x = []
y = [x, [x], dict(x=x)]
objgraph.show_refs([y], filename='sample-graph.png')
А теперь — жемчужина в короне Python 3. tracemalloc — это встроенный модуль для отслеживания выделения памяти:
import tracemalloc
tracemalloc.start()
# ваш код здесь
snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics('lineno')
print("[ Топ 10 ]")
for stat in top_stats[:10]:
print(stat)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
Этот метод извлекает ресурс с сервера. Он идемпотентен: несколько идентичных запросов возвращают один и тот же результат.
Этот метод обновляет или создает ресурс. Он также идемпотентен: несколько идентичных запросов обновят один и тот же ресурс.
Этот метод используется для создания новых ресурсов. Он не идемпотентен: два одинаковых POST-запроса создадут дублированные ресурсы.
Этот метод используется для удаления ресурса. Он идемпотентен: несколько идентичных запросов удалят один и тот же ресурс.
Метод PATCH применяется для частичного изменения ресурса.
Метод HEAD запрашивает ответ, идентичный GET-запросу, но без тела ответа.
Метод CONNECT устанавливает туннель к серверу, идентифицированному целевым ресурсом.
Этот метод описывает параметры связи для целевого ресурса.
Этот метод выполняет тест возврата сообщения по пути к целевому ресурсу.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4❤2