Почему присвоение не является копированием?
В python все является объектом. В этом легко убедится воспользовавшись функцией
При присвоении в новую переменную отправляется ссылка на объект. А при изменении объекта ссылка на него не меняется.
Тут многие могут спросить про строки и числа, поэтому отвечаю — с ними то же самое. Просто при операциях не изменяется старый объект, а создается новый. Все это можно проследить воспользовавшись функцией
Интересно то, что за частью чисел в языке на программном уровне закреплена ссылка на объект. Можете попробовать сами.
Подписывайтесь на канал 👉@pythonofff
В python все является объектом. В этом легко убедится воспользовавшись функцией
dir()
.При присвоении в новую переменную отправляется ссылка на объект. А при изменении объекта ссылка на него не меняется.
Тут многие могут спросить про строки и числа, поэтому отвечаю — с ними то же самое. Просто при операциях не изменяется старый объект, а создается новый. Все это можно проследить воспользовавшись функцией
id()
, которая показывает номер объекта.Интересно то, что за частью чисел в языке на программном уровне закреплена ссылка на объект. Можете попробовать сами.
Подписывайтесь на канал 👉@pythonofff
Как отправить post запрос в Python?
Для того, чтобы отправить post-запрос, нам нужно воспользоваться библиотекой
Как мы видим - сервер получил наши данные.
В качестве отправных данных можно поставить любые значения - данный сервер их примет.
Подписывайтесь на канал 👉@pythonofff
Для того, чтобы отправить post-запрос, нам нужно воспользоваться библиотекой
requests
.Как мы видим - сервер получил наши данные.
В качестве отправных данных можно поставить любые значения - данный сервер их примет.
Подписывайтесь на канал 👉@pythonofff
Форматирование строк
Часто приходится работать со строкой и выводить различные данные. Не проблема, когда нужно вывести что-то короткое:
В python3 есть очень удобный способ. Нужно поставить f перед строкой а в фигурных скобках {} написать нужную переменную. Если же эти скобки понадобились в тексте, то достаточно написать их дважды, чтобы экранировать.
Еще один способ — воспользоваться методом format(). Суть та же, но на этот раз без добавления f и добавления переменных как аргументов.
Подписывайтесь на канал 👉@pythonofff
Часто приходится работать со строкой и выводить различные данные. Не проблема, когда нужно вывести что-то короткое:
print('Hello', name)
. Но чаще строки нужны для отображения на формах, а не через print(). Еще чаще вывод должен быть намного сложнее.В python3 есть очень удобный способ. Нужно поставить f перед строкой а в фигурных скобках {} написать нужную переменную. Если же эти скобки понадобились в тексте, то достаточно написать их дважды, чтобы экранировать.
Еще один способ — воспользоваться методом format(). Суть та же, но на этот раз без добавления f и добавления переменных как аргументов.
Подписывайтесь на канал 👉@pythonofff
Кортежи - tuple()
По своей сути кортежи это тот же список, но который имеет ряд преимуществ (если его правильно применять).
Кортежи занимают меньше места, в отличии от списка, но тюплы не изменяются. Их неизменность применяется для большей безопасности. Кроме того, кортежи быстрее работают.
На самом деле каждый из нас использовал tuple, просто не знал, что он им является. При создании списков используются квадратные скобки или функция list(), а для кортежей обычные скобки или tuple().
Как и списки кортежи можно сравнивать между собой. Правила при этом те же.
Используйте tuple, если вам нужен неизменяемый список или нужно получить и сразу же работать со значениями.
Подписывайтесь на канал 👉@pythonofff
По своей сути кортежи это тот же список, но который имеет ряд преимуществ (если его правильно применять).
Кортежи занимают меньше места, в отличии от списка, но тюплы не изменяются. Их неизменность применяется для большей безопасности. Кроме того, кортежи быстрее работают.
На самом деле каждый из нас использовал tuple, просто не знал, что он им является. При создании списков используются квадратные скобки или функция list(), а для кортежей обычные скобки или tuple().
Как и списки кортежи можно сравнивать между собой. Правила при этом те же.
Используйте tuple, если вам нужен неизменяемый список или нужно получить и сразу же работать со значениями.
Подписывайтесь на канал 👉@pythonofff
Как записать список в csv файл на Python?
Для записи в csv-файл определенного массива, Вы можете воспользоваться библиотекой csv.
В примере мы показываем, как будем записывать весь список в один столбец и в одну строку.
Посмотреть пример в онлайн редакторе.
Подписывайтесь на канал 👉@pythonofff
Для записи в csv-файл определенного массива, Вы можете воспользоваться библиотекой csv.
В примере мы показываем, как будем записывать весь список в один столбец и в одну строку.
Посмотреть пример в онлайн редакторе.
Подписывайтесь на канал 👉@pythonofff
Выполнить строку - eval()
Говорят, каждый программист должен написать калькулятор. Но если вы python разработчик, то вы можете сделать это в одну строчку:
eval() создана чтобы выполнять выражения и функции, обязательно возвращая какой-то результат. Так можно облегчить написание кода, принимая строкой словари, списки.
Единственное, что не умеет eval - присваивать что-то переменным. Зато она может их использовать!
Правильное применение функции сильно упростит вам жизнь.
Подписывайтесь на канал 👉@pythonofff
Говорят, каждый программист должен написать калькулятор. Но если вы python разработчик, то вы можете сделать это в одну строчку:
print(eval(input()))
Что за eval и почему это работает?eval() создана чтобы выполнять выражения и функции, обязательно возвращая какой-то результат. Так можно облегчить написание кода, принимая строкой словари, списки.
Единственное, что не умеет eval - присваивать что-то переменным. Зато она может их использовать!
Правильное применение функции сильно упростит вам жизнь.
Подписывайтесь на канал 👉@pythonofff
Распаковка
Неудобно каждый раз для вывода объединять строки через
На самом деле применение более широкое. Звездочка может также собирать несколько значений в одну переменную. Очень удобно применять для функций с бесконечным количеством аргументов или только с именованными аргументами.
Подписывайтесь на канал 👉@pythonofff
Неудобно каждый раз для вывода объединять строки через
join()
или тем более как-то объединять числа. Мы можем распаковать кортеж или список, воспользовавшись звездочкой *. Со словарями данный способ не работает.На самом деле применение более широкое. Звездочка может также собирать несколько значений в одну переменную. Очень удобно применять для функций с бесконечным количеством аргументов или только с именованными аргументами.
Подписывайтесь на канал 👉@pythonofff
Как отправить xml запрос в Python?
Чтобы отправить post-запрос с xml-содержимым, Вы можете воспользоваться библиотекой requests
Посмотреть пример.
Подписывайтесь на канал 👉@pythonofff
Чтобы отправить post-запрос с xml-содержимым, Вы можете воспользоваться библиотекой requests
Посмотреть пример.
Подписывайтесь на канал 👉@pythonofff
В одну строчку
Python гибкий язык и позволяет многое сделать в одну строчку. К примеру, матрицу из одних нулей. Или постоянно возрастающий список.
Такие методы лучше использовать когда надо сгенерировать что-то маленькое или нужное. Если использовать нужно сейчас и строго по одному, то лучше использовать итераторы. Об итераторах подробнее расскажем чуть позже.
Примеры списочных выражений на картинке. В следующий раз не придется набирать одинаковый текст несколько раз.
Подписывайтесь на канал 👉@pythonofff
Python гибкий язык и позволяет многое сделать в одну строчку. К примеру, матрицу из одних нулей. Или постоянно возрастающий список.
Такие методы лучше использовать когда надо сгенерировать что-то маленькое или нужное. Если использовать нужно сейчас и строго по одному, то лучше использовать итераторы. Об итераторах подробнее расскажем чуть позже.
Примеры списочных выражений на картинке. В следующий раз не придется набирать одинаковый текст несколько раз.
Подписывайтесь на канал 👉@pythonofff
Как удалить знаки препинания из строки в Python?
Чтобы удалить все знаки препинания из строки, мы можем воспользоваться методом строки
Посмотреть пример.
Подписывайтесь на канал 👉@pythonofff
Чтобы удалить все знаки препинания из строки, мы можем воспользоваться методом строки
.replace()
Посмотреть пример.
Подписывайтесь на канал 👉@pythonofff
В одну строку - итератор
Вы уже знаете, как писать многие крутые штуки в одну строчку. Но можно ускорить работу кода, используя итераторы.
Итератор - объект, который хранит начало, конец, текущий элемент и правило преобразований. В итоге мы можем получать только новые значения.
Преимущество в том, что итераторы потребляют намного меньше памяти, чем списки и кортежи.
Вы уже точно знаете один итератор и даже пользуетесь им -
А есть еще один очень полезный -
Подписывайтесь на канал 👉@pythonofff
Вы уже знаете, как писать многие крутые штуки в одну строчку. Но можно ускорить работу кода, используя итераторы.
Итератор - объект, который хранит начало, конец, текущий элемент и правило преобразований. В итоге мы можем получать только новые значения.
Преимущество в том, что итераторы потребляют намного меньше памяти, чем списки и кортежи.
Вы уже точно знаете один итератор и даже пользуетесь им -
range()
. А есть еще один очень полезный -
map()
. Он принимает два аргумента, функцию для задания правила преобразования и что-то, что требуется преобразовать. Подписывайтесь на канал 👉@pythonofff
Параметры функции *args, **kwargs
Думаю, многие хоть раз видели такую запись, сейчас мы узнаем, что это за магические символы. Сообщу сразу, что параметры функции
В примере функция принимает обязательный аргумент value, а остальных аргументов она как бы не ожидает. В таком случае *args упаковывает все не именованные аргументы в кортеж, а
В целом, конструкция с
Подписывайтесь на канал 👉@pythonofff
Думаю, многие хоть раз видели такую запись, сейчас мы узнаем, что это за магические символы. Сообщу сразу, что параметры функции
*args
и **kwargs
– общепринятые имена переменных, а разбирать мы будем звездочки перед ними.В примере функция принимает обязательный аргумент value, а остальных аргументов она как бы не ожидает. В таком случае *args упаковывает все не именованные аргументы в кортеж, а
**kwargs
– все именованные в словарь.В целом, конструкция с
*args
, **kwargs
получается достаточно полезной, если мы не знаем, кто и в каких целях будет использовать нашу функцию. То есть, мы можем запихнуть в аргументы после такого практически всё.Подписывайтесь на канал 👉@pythonofff
Заглушки
Для создания пустых функций и классов есть сразу два способа соответствующих правилам
Их применение более широкое. Мы видели точки, когда выводили бесконечный список. Но то, был просто вывод, а не наш объект.
На картинке пример программы проверяющий пароль от юзера. Сохранение в БД мы еще не решили как писать, поэтому просто создали заглушку.
Подписывайтесь на канал 👉@pythonofff
Для создания пустых функций и классов есть сразу два способа соответствующих правилам
PEP
: "pass
" и "...". Предпочтительнее использовать первый вариант. Он означает буквальным счетом пустоту, даже применить функции dir()
или help()
не получится. А вот три точки - объект.Их применение более широкое. Мы видели точки, когда выводили бесконечный список. Но то, был просто вывод, а не наш объект.
Ellipsis
применяется так же для создания пустых списков. Он показывает, что внутри не что-то одно, а много. На практике его используют лишь в документации и при создании все тех же пустых функций. На картинке пример программы проверяющий пароль от юзера. Сохранение в БД мы еще не решили как писать, поэтому просто создали заглушку.
Подписывайтесь на канал 👉@pythonofff
Как хешировать пароли в Python?
Для хеширования паролей, Вы можете воспользоваться стандартными библиотеками
Посмотреть пример.
Подписывайтесь на канал 👉@pythonofff
Для хеширования паролей, Вы можете воспользоваться стандартными библиотеками
hashlib
и os
Посмотреть пример.
Подписывайтесь на канал 👉@pythonofff
Символы экранирования
При выводе строки иногда появляются различные непонятные нам символы вроде '
Вод пример самых частых символов:
Но для тех, кто этого не знает могут возникнуть проблемы. Например, если вы попробуете задать адрес на вашем компьютере. А он состоит из символов '
Можно, конечно, воспользоваться нашим знанием и написать, экранировав все слеши, но есть более простой способ отменить экранирование - поставить
Подписывайтесь на канал 👉@pythonofff
При выводе строки иногда появляются различные непонятные нам символы вроде '
\n
'. Подобные записи всегда начинаются с '\
' (обратный слеш), и могут состоять из нескольких символов, но Python считает их за один. Если эту тему изучить, то можно делать интересные вещи в одну строчку, либо красиво оформлять вывод.Вод пример самых частых символов:
\\
- Сам символ обратного слеша (остается один символ \
)\'
- Апостроф (остается один ')\"
- Кавычка (остается один символ ")\n
- Новая строка (перевод строки)\r
- Возврат каретки\t
- Горизонтальная табуляцияНо для тех, кто этого не знает могут возникнуть проблемы. Например, если вы попробуете задать адрес на вашем компьютере. А он состоит из символов '
/
', вам интерпретатор выдаст ошибку. Можно, конечно, воспользоваться нашим знанием и написать, экранировав все слеши, но есть более простой способ отменить экранирование - поставить
r
перед строчкой. Подписывайтесь на канал 👉@pythonofff
Пишем игру Сапер на Python
Сегодня мы напишем одну из самых распространенных игр - сапер. Для графического интерфейса будем использовать библиотеку tkinter.
Подробнее
Полный код игры сапер на Python на GitHub
Подписывайтесь на канал 👉@pythonofff
Сегодня мы напишем одну из самых распространенных игр - сапер. Для графического интерфейса будем использовать библиотеку tkinter.
Подробнее
Полный код игры сапер на Python на GitHub
Подписывайтесь на канал 👉@pythonofff
Оформление кода
Все вы знаете, что в python есть своя философия. Именно отсюда берутся определенные правила и стандарты. В пайтон такое соглашение назвали PEP 8 (читается - пэп).
Соответствие пепу позволяет видеть основную структуру вашего кода другим разработчикам. Не нужно привыкать к другому оформлению кода. Если вы привыкли как-то оформлять код, а увидели что-то совершенно другое, то вы поймете.
Официальная документация по PEP 8.
Основные моменты:
Используйте пробелы, разрешается использование табов, но смешивание запрещено. Отступ соответствует 4 пробелам. Хорошие редакторы кода автоматически заменяют табы на пробелы.
Вокруг операторов +, -, =, *, /, ** должны быть пробелы.
Строка не должна превышать 101 символа
Импорты можно делать только по одному на строку! При этом из одного модуля можно доставать несколько нужных объектов. Порядок тоже важен:
- стандартные библиотеки;
- сторонние;
- созданные вами
Подписывайтесь на канал 👉@pythonofff
Все вы знаете, что в python есть своя философия. Именно отсюда берутся определенные правила и стандарты. В пайтон такое соглашение назвали PEP 8 (читается - пэп).
Соответствие пепу позволяет видеть основную структуру вашего кода другим разработчикам. Не нужно привыкать к другому оформлению кода. Если вы привыкли как-то оформлять код, а увидели что-то совершенно другое, то вы поймете.
Официальная документация по PEP 8.
Основные моменты:
Используйте пробелы, разрешается использование табов, но смешивание запрещено. Отступ соответствует 4 пробелам. Хорошие редакторы кода автоматически заменяют табы на пробелы.
Вокруг операторов +, -, =, *, /, ** должны быть пробелы.
Строка не должна превышать 101 символа
Импорты можно делать только по одному на строку! При этом из одного модуля можно доставать несколько нужных объектов. Порядок тоже важен:
- стандартные библиотеки;
- сторонние;
- созданные вами
Подписывайтесь на канал 👉@pythonofff
Бесконечные списки
Мы уже рассказывали про важность копирования списков. Но именно из-за такой процедуры появляется возможность создавать бесконечные списки. Дойти до конца такого списка невозможно, при этом он потребляет минимум памяти. Попробуйте создать сами.
На картинке (см. выше) видно создание. А затем мы пробуем модуль copy, чтобы узнать сможет ли он сделать глубокое копирование бесконечного объекта?
Применить знание особо негде, но данное задание помогает понять работу списков. Возможно, такой вопрос задаст вам рекрутер на одном из собеседований.
Подписывайтесь на канал 👉@pythonofff
Мы уже рассказывали про важность копирования списков. Но именно из-за такой процедуры появляется возможность создавать бесконечные списки. Дойти до конца такого списка невозможно, при этом он потребляет минимум памяти. Попробуйте создать сами.
На картинке (см. выше) видно создание. А затем мы пробуем модуль copy, чтобы узнать сможет ли он сделать глубокое копирование бесконечного объекта?
Применить знание особо негде, но данное задание помогает понять работу списков. Возможно, такой вопрос задаст вам рекрутер на одном из собеседований.
Подписывайтесь на канал 👉@pythonofff
Анонимные функции
Часто функции нужны только один раз, причем короткие. И избыточно создавать под них функцию и придумывать ей имя.
Для таких случаев существуют лямбда функции, так выглядит их создание:
Такие функции обязан знать каждый программист, их применение сильно сокращает код.
Подписывайтесь на канал 👉@pythonofff
Часто функции нужны только один раз, причем короткие. И избыточно создавать под них функцию и придумывать ей имя.
Для таких случаев существуют лямбда функции, так выглядит их создание:
<аргументы>
: <выражение>
Такие функции обязан знать каждый программист, их применение сильно сокращает код.
Подписывайтесь на канал 👉@pythonofff
Конструктор класса
У классов практически во всех языках есть конструкторы — это такие специальные методы, которые вызываются автоматически и инициализируют экземпляр класса.
В Python конструкторы в классах имеют название
Подписывайтесь на канал 👉@pythonofff
У классов практически во всех языках есть конструкторы — это такие специальные методы, которые вызываются автоматически и инициализируют экземпляр класса.
В Python конструкторы в классах имеют название
__init__()
, и их почти всегда переопределяют. Делается это для того, чтобы назначить свойства объекту и выполнить предварительные действия. Подписывайтесь на канал 👉@pythonofff
Функции высшего порядка
Функции высшего порядка - функции принимающие или возвращающие другие функции. Очень говорящее название, запомнить очень просто
Чуть ранее мы говорили про
Еще одна функция-итератор -
Она поможет отфильтровать списки или итераторы. Первым принимает функцию, если она возвращает
Не забывайте комбинировать функции!
Подписывайтесь на канал 👉@pythonofff
Функции высшего порядка - функции принимающие или возвращающие другие функции. Очень говорящее название, запомнить очень просто
Чуть ранее мы говорили про
lambda
, они очень хорошо взаимодействуют с высшими функциями. Про одну из них мы говорили - map()
. Она может принимать в себя лямбду, но это не дает такой большой функциональности.Еще одна функция-итератор -
filter()
Она поможет отфильтровать списки или итераторы. Первым принимает функцию, если она возвращает
True
, то пропускает элемент, вторым аргументом принимает список или итератор. Не забывайте комбинировать функции!
Подписывайтесь на канал 👉@pythonofff