Official Python Docs
https://docs.python.org/3/
Tools:
http://docs.python-guide.org/en/latest/dev/virtualenvs/
http://www.pythonforbeginners.com/basics/python-pip-usage
Practice:
http://www.practicepython.org/
https://www.hackerrank.com
Mobile apps:
https://play.google.com/store/apps/details?id=com.sololearn
Video tutorials:
https://www.udemy.com/python-for-absolute-beginners-u/
https://www.udacity.com/course/programming-foundations-with-python--ud036
https://www.coursera.org/learn/python3
https://pythonprogramming.net/
https://docs.python.org/3/
Tools:
http://docs.python-guide.org/en/latest/dev/virtualenvs/
http://www.pythonforbeginners.com/basics/python-pip-usage
Practice:
http://www.practicepython.org/
https://www.hackerrank.com
Mobile apps:
https://play.google.com/store/apps/details?id=com.sololearn
Video tutorials:
https://www.udemy.com/python-for-absolute-beginners-u/
https://www.udacity.com/course/programming-foundations-with-python--ud036
https://www.coursera.org/learn/python3
https://pythonprogramming.net/
docs.python-guide.org
Pipenv & Virtual Environments — The Hitchhiker's Guide to Python
Forwarded from Data Science | Machinelearning [ru]
Модуль pickle
#Python
Модуль pickle реализует мощный алгоритм сериализации и десериализации объектов Python. "Pickling" - процесс преобразования объекта Python в поток байтов, а "unpickling" - обратная операция, в результате которой поток байтов преобразуется обратно в Python-объект. Так как поток байтов легко можно записать в файл, модуль pickle широко применяется для сохранения и загрузки сложных объектов в Python.
#Python
Модуль pickle реализует мощный алгоритм сериализации и десериализации объектов Python. "Pickling" - процесс преобразования объекта Python в поток байтов, а "unpickling" - обратная операция, в результате которой поток байтов преобразуется обратно в Python-объект. Так как поток байтов легко можно записать в файл, модуль pickle широко применяется для сохранения и загрузки сложных объектов в Python.
Forwarded from Библиотека питониста | Python, Django, Flask
30 сентября – 2 октября приглашаем системных инженеров и всех, кто интересуется облачными сервисами AWS / Azure / GCP, на онлайн конференцию Get Prof IT: DevOps & Cloud.
Конференция продлится три дня, каждый день – один доклад, посвященный опыту работу с облачной платформой.
🔹30 сентября: AWS – история переезда;
🔹1 октября: Practical Aspects k8s in Azure Cloud;
🔹2 октября: Hybrid-cloud with Google.
Участие бесплатное.
🗓 30 сентября - 2 октября, начало в 10:00 МСК
🌐 ОНЛАЙН
Регистрация: https://epa.ms/cloud-conference
Конференция продлится три дня, каждый день – один доклад, посвященный опыту работу с облачной платформой.
🔹30 сентября: AWS – история переезда;
🔹1 октября: Practical Aspects k8s in Azure Cloud;
🔹2 октября: Hybrid-cloud with Google.
Участие бесплатное.
🗓 30 сентября - 2 октября, начало в 10:00 МСК
🌐 ОНЛАЙН
Регистрация: https://epa.ms/cloud-conference
Forwarded from Библиотека питониста | Python, Django, Flask
Вебинар для Python-разработчиков с опытом.
Покажем на практике:
1. Что делать, когда ресурсов для вертикального масштабирования redis уже нет, а данных становится всё больше.
2. Как в web-разработке применяются алгоритмы консенсуса.
3. Как перемещать данные между старым и новым хранилищами и не допустить downtime.
• 6 октября в 19:00 (мск)
• 60 минут практики + 20 минут ответов на вопросы
• Бесперебойная онлайн-трансляция
Вебинар для Python-разработчиков с опытом.
Бесплатная регистрация на сайте
Покажем на практике:
1. Что делать, когда ресурсов для вертикального масштабирования redis уже нет, а данных становится всё больше.
2. Как в web-разработке применяются алгоритмы консенсуса.
3. Как перемещать данные между старым и новым хранилищами и не допустить downtime.
• 6 октября в 19:00 (мск)
• 60 минут практики + 20 минут ответов на вопросы
• Бесперебойная онлайн-трансляция
Вебинар для Python-разработчиков с опытом.
Бесплатная регистрация на сайте
Forwarded from Библиотека питониста | Python, Django, Flask
Python Interviews: Discussions with Python Experts (2018)
Автор: Michael Driscoll
Количество страниц: 368
В книге содержатся двадцать разных интервью по Python, приведенные различными практиками из индустрии, от авторов пакетов до data scientist-ов. Вы ознакомитесь с трендами в программировании, изучите историю языка и поймете, как мыслят успешные опытные программисты.
Скачать книгу
Автор: Michael Driscoll
Количество страниц: 368
В книге содержатся двадцать разных интервью по Python, приведенные различными практиками из индустрии, от авторов пакетов до data scientist-ов. Вы ознакомитесь с трендами в программировании, изучите историю языка и поймете, как мыслят успешные опытные программисты.
Скачать книгу
Telegram
Книги для программистов (reserved)
Python Interviews: Discussions with Python Experts (2018)
Автор: Michael Driscoll
Автор: Michael Driscoll
Forwarded from Pythonist.ru - образование по питону
Django. Оптимизация работы с базой данных
В этой статье мы поделимся с вами несколькими советами по оптимизации запросов к базе данных.
Читать статью
#django
В этой статье мы поделимся с вами несколькими советами по оптимизации запросов к базе данных.
Читать статью
#django
Forwarded from Библиотека питониста | Python, Django, Flask
Mastering Large Datasets with Python (2020)
Автор: John T. Wolohan
Количество страниц: 312
Современные решения для анализа данных должны быть чистыми, удобными для чтения и масштабируемыми. В своей книге автор учит тому, как можно взять небольшой проект и масштабировать его, используя функционально зависимый подход в программировании на Python. Вы изучите методы и встроенные инструменты Python, которые обеспечивают ясность и масштабируемость, такие как высокопроизводительный метод параллелизма, а также распределенные технологии, обеспечивающие высокую пропускную способность в работе с данными. Большие упражнения в этом практическом руководстве закрепят полученные важные навыки, которые пригодятся в любом крупномасштабном проекте в области науки о данных.
Скачать книгу
Автор: John T. Wolohan
Количество страниц: 312
Современные решения для анализа данных должны быть чистыми, удобными для чтения и масштабируемыми. В своей книге автор учит тому, как можно взять небольшой проект и масштабировать его, используя функционально зависимый подход в программировании на Python. Вы изучите методы и встроенные инструменты Python, которые обеспечивают ясность и масштабируемость, такие как высокопроизводительный метод параллелизма, а также распределенные технологии, обеспечивающие высокую пропускную способность в работе с данными. Большие упражнения в этом практическом руководстве закрепят полученные важные навыки, которые пригодятся в любом крупномасштабном проекте в области науки о данных.
Скачать книгу
Telegram
Книги для программистов (reserved)
Mastering Large Datasets with Python (2020)
Автор: John T. Wolohan
Автор: John T. Wolohan
Forwarded from Библиотека питониста | Python, Django, Flask
Числа в Python
В этом руководстве вы узнаете о числах и основах математики в Python. Вы изучите целые числа, числа с плавающей запятой и комплексные числа и увидите, как выполнять вычисления с использованием арифметических операторов Python, математических функций и числовых методов.
https://proglib.io/w/98f451a2
В этом руководстве вы узнаете о числах и основах математики в Python. Вы изучите целые числа, числа с плавающей запятой и комплексные числа и увидите, как выполнять вычисления с использованием арифметических операторов Python, математических функций и числовых методов.
https://proglib.io/w/98f451a2
Realpython
Numbers in Python – Real Python
In this tutorial, you'll learn about numbers and basic math in Python. You'll explore integer, floating-point numbers, and complex numbers and see how perform calculations using Python's arithmetic operators, math functions, and number methods.
Forwarded from Python Academy
Forwarded from Библиотека питониста | Python, Django, Flask
Realpython
Python Practice Problems: Get Ready for Your Next Interview – Real Python
In this tutorial, you'll prepare for future interviews by working through a set of Python practice problems that commonly appear in coding tests. You'll work through the problems yourself and then compare your results with solutions developed by the Real…
Forwarded from Тесты по Python
Тест по Python для веб разработчика. Вопросы легкие. Уровень Junior-Middle.
Проходите и поймите готовы ли вы к курсам: https://otus.pw/vFGT/
Проходите и поймите готовы ли вы к курсам: https://otus.pw/vFGT/
Forwarded from Python Lounge: работа и стажировки для программистов
Использование списков в качестве стеков
Стек — абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (англ. last in — first out, «последним пришёл — первым вышел»).
Методы встроенного списка в Python позволяют очень легко использовать список в виде стека. Чтобы добавить элемент на вершину стека, используйте
Стек — абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (англ. last in — first out, «последним пришёл — первым вышел»).
Методы встроенного списка в Python позволяют очень легко использовать список в виде стека. Чтобы добавить элемент на вершину стека, используйте
append()
. Чтобы извлечь элемент из верхней части стека, используйте pop()
без явного индекса. Пример:>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack
[3, 4, 5]
>>> stack.pop()
5
Forwarded from Python Lounge: работа и стажировки для программистов
Switch-конструкция с помощью словаря
К сожалению, в Python не существует switch-конструкций, в отличие от большинства других языков программирования, и поэтому приходится строить башни из условных операторов в своём коде.
Однако есть одно хитрое решение — использовать словарь, где значениями будут функции. Например, напишем словарь, который будет использован для математических операторов.
В этом примере были использованы lambda-функции для простоты, но вместо них можете подставить любые другие. Для тех, кто не знает: lambda - объявление анонимной функции (можно косвенно сравнить с def); x, y - принимаемые аргументы; x + y - то, что функция возвращает.
Примерно вот так мы можем пользоваться подобной штукой. Думаю, что многие найдут полезное применение подобному использованию словарей.
К сожалению, в Python не существует switch-конструкций, в отличие от большинства других языков программирования, и поэтому приходится строить башни из условных операторов в своём коде.
Однако есть одно хитрое решение — использовать словарь, где значениями будут функции. Например, напишем словарь, который будет использован для математических операторов.
switch = {
'+': lambda x, y: x + y,
'-': lambda x, y: x - y,
'*': lambda x, y: x * y,
'/': lambda x, y: x / y
}
В этом примере были использованы lambda-функции для простоты, но вместо них можете подставить любые другие. Для тех, кто не знает: lambda - объявление анонимной функции (можно косвенно сравнить с def); x, y - принимаемые аргументы; x + y - то, что функция возвращает.
result = switch['*'](4, 5)
print(result)
# Output: 20
Примерно вот так мы можем пользоваться подобной штукой. Думаю, что многие найдут полезное применение подобному использованию словарей.
Forwarded from Python Lounge: работа и стажировки для программистов
Паттерн проектирования Singleton
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Итак, нам требуется такой класс, который будет при вызове возвращать один и тот же экземпляр, поэтому нам придется переопределить магический метод new.
new__(cls, *args, **kwargs) –– вызывается для создания экземпляра класса, перед вызовом __init. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).
То есть при вызове конструктора класса Singleton, будет возвращаться один и тот же объект из памяти.
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Итак, нам требуется такой класс, который будет при вызове возвращать один и тот же экземпляр, поэтому нам придется переопределить магический метод new.
new__(cls, *args, **kwargs) –– вызывается для создания экземпляра класса, перед вызовом __init. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).
class Singleton:
instance = None
def __new__(cls):
if cls.instance is None:
cls.instance = super().__new__(cls)
return cls.instance
Здесь мы проверяем, есть ли значение у атрибута instance. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.То есть при вызове конструктора класса Singleton, будет возвращаться один и тот же объект из памяти.
a = Singleton()
b = Singleton()
Создали два экземпляра, теперь убедимся, что они содержат одинаковый объект. print(a is b) # True
Forwarded from Python Lounge: работа и стажировки для программистов
Изменение списка во время итерации по нему
Предположим, что требуется удалить все нечетные числа из списка. Проблема со следующим кодом должна быть довольно очевидной:
Удаление элемента из списка во время его итерации – это проблема, которая хорошо известна любому опытному разработчику.
К счастью, Python включает в себя ряд элегантных парадигм программирования, которые при правильном использовании могут привести к значительному упрощению и оптимизации кода. Одна из таких парадигм – list comprehensions. Генераторы списков часто используют именно для решения подобных проблем, что и показывает реализация кода ниже:
Предположим, что требуется удалить все нечетные числа из списка. Проблема со следующим кодом должна быть довольно очевидной:
odd = lambda x: bool(x % 2) # функция проверки числа на нечетность
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in range(10):
if odd(numbers[i]):
del numbers[i] # удаление элемента из списка во время итерации по нему
# Output:
Traceback (most recent call last):
if odd(numbers[i]):
IndexError: list index out of range
Удаление элемента из списка во время его итерации – это проблема, которая хорошо известна любому опытному разработчику.
К счастью, Python включает в себя ряд элегантных парадигм программирования, которые при правильном использовании могут привести к значительному упрощению и оптимизации кода. Одна из таких парадигм – list comprehensions. Генераторы списков часто используют именно для решения подобных проблем, что и показывает реализация кода ниже:
odd = lambda x: bool(x % 2) # функция проверки числа на нечетность
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers = [n for n in numbers if not odd(n)] # генератор нового списка
print(numbers)
# Output:
[2, 4, 6, 8, 10]
Forwarded from Python Lounge: работа и стажировки для программистов
Аннотации типов
Всем известно, что Python – язык с динамической типизацией. Аннотации типов нужны для того, чтобы повысить информативность исходного кода, но они никак не влияют на поведение программы.
Для примера потребуется импортировать типы
Типы данных указывается через двоеточие после именно переменной после её создания. Создадим словарь с числами и сразу же список, состоящий из значений этого словаря:
Потом создадим функцию, возвращающую сумму переданных значений. В аргументах точно так же можно указывать их типы, а также через стрелочку можно указать типа возвращаемого значения:
Теперь используем эту функцию, передав туда распакованный список:
Однако помните, что аннотации типов не влияют на ход исполнения программы, поэтому в ранее написаную функцию мы с таким же успехом можем передать и строки, хотя указывали целочисленный типа данных:
Всем известно, что Python – язык с динамической типизацией. Аннотации типов нужны для того, чтобы повысить информативность исходного кода, но они никак не влияют на поведение программы.
Для примера потребуется импортировать типы
List
(список) и Dict
(словарь) из модуля typing
:from typing import List, Dict
Типы данных указывается через двоеточие после именно переменной после её создания. Создадим словарь с числами и сразу же список, состоящий из значений этого словаря:
numbers: Dict[str, int] = {'one': 1, 'two': 2}
values: List[int] = numbers.values()
Потом создадим функцию, возвращающую сумму переданных значений. В аргументах точно так же можно указывать их типы, а также через стрелочку можно указать типа возвращаемого значения:
def sum(a: int, b: int) -> int:
return a + b
Теперь используем эту функцию, передав туда распакованный список:
sum(*values)
# Output: 3
Однако помните, что аннотации типов не влияют на ход исполнения программы, поэтому в ранее написаную функцию мы с таким же успехом можем передать и строки, хотя указывали целочисленный типа данных:
sum('Python ', 'Lounge')
# Output: 'Python Lounge'
Forwarded from Python Lounge: работа и стажировки для программистов
Реализация класса контекстного менеджера
Начнем с того, что в контекстном менеджере должны быть определены методы enter и exit. Давайте создадим наш собственный менеджер контекста для открытия файлов и поймем суть его работы.
Просто определив методы enter и exit, мы можем использовать наш новый класс с оператором
Наш метод exit принимает три аргумента. Они требуются для каждого метода exit, который является частью класса.
# test
Начнем с того, что в контекстном менеджере должны быть определены методы enter и exit. Давайте создадим наш собственный менеджер контекста для открытия файлов и поймем суть его работы.
class NewOpen(object):
def __init__(self, file_name, mode):
self.file = open(file_name, mode)
def __enter__(self):
return self.file
def __exit__(self, type, value, traceback):
self.file.close()
Просто определив методы enter и exit, мы можем использовать наш новый класс с оператором
with
. Давайте попробуем:with NewOpen('test.txt', 'w') as file:
file.write('Hello, world!')
Наш метод exit принимает три аргумента. Они требуются для каждого метода exit, который является частью класса.
# test
Forwarded from Python Academy
Дробные числа
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Поэтому для идеальных вычислений лучше использовать
#числа #fraction
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Decimal
, который предоставит намного большую точность, но и его может не хватить в некоторых случаях. Поэтому для идеальных вычислений лучше использовать
Fraction
, который представляет и хранит число в виде рациональной дроби.#числа #fraction