22 полезных примера кода на python

Краткое введение в ООП

Объектно-ориентированное программирование (ООП) – технология разработки сложного программного обеспечения, в которой программа строится в виде совокупности объектов и их взаимосвязей.

Объединение данных и действий, производимых над этими данными, в единое целое, которое называется объектом – является одним из основных принципов ООП.

Основными понятиями являются понятие класса и объекта.

Класс является типом данных, определяемым пользователем и представляет собой структуру в виде данных и методов для работы с данными.

Формально Класс — это шаблон, по которому будет сделан объект.

Объект является экземпляром класса. Объект  и экземпляр - это одно и то же.

Вот пример. Форма для изготовления печенья – это класс, а само печенье это объект или экземпляр класса, т.е. это конкретное изделие. Печенье имеет размеры, цвет, состав – это атрибуты класса. Также в классе описываются методы, которые предназначены для чтения или изменения данных объекта.

В Python характеристики  объекта, называются атрибутами, а действия, которые мы можем проделывать с объектами, — методами. Методами в Python  называют функции, которые определяются внутри класса.

Объект = атрибуты + методы 

Examples

For..Else

for x in range(3):
    print(x)
else:
    print('Final x = %d' % (x))

Strings as an iterable

string = "Hello World"
for x in string:
    print(x)

Lists as an iterable

collection = 
for x in collection:
    print(x)

Loop over Lists of lists

list_of_lists = , , ]
for list in list_of_lists:
    for x in list:
        print(x)

Creating your own iterable

class Iterable(object):

    def __init__(self,values):
        self.values = values
        self.location = 0

    def __iter__(self):
        return self

    def next(self):
        if self.location == len(self.values):
            raise StopIteration
        value = self.values
        self.location += 1
        return value

Your own range generator using yield

def my_range(start, end, step):
    while start <= end:
        yield start
        start += step

for x in my_range(1, 10, 0.5):
    print(x)

Логические операторы

Логические операторы – одни из самых важных, поскольку позволяют управлять потоком выполнения программы. В Python предусмотрено три оператора этого типа – and, or, not. Их легко запомнить, потому что они идентичны аналогичным словам на английском языке. Соответственно, они обозначают «и», «или», «не» соответственно. Рассмотрим эти операторы подробнее.

И (and). Оператор, выполняющий следующий алгоритм:

  1. Сравнивает между собой два операнда.
  2. Если оба выражения являются истинными, возвращается значение True. Если же хотя бы одно из них ложное, то возвращается False.

Приведем пример использования выражения.

>>> a = 7 > 7 and 2 > -1

>>> print(a)

Аналогично примерам, приведенным выше, здесь программа печатает результат выполнения своих операций по предыдущей строчке. Поскольку после обработки обнаружится результат «Ложь», то консоль также выдаст значение False.

Или (or). В этом случае истиной будет считаться тот результат, когда хотя бы одно из условий в операндах является истинным. Если же оба из них ложные, то выдается значение False.

>>> a = 7 > 7 or 2 > -1

>>> print(a)

Не (not). Этот оператор осуществляет инверсию значений. То есть, если на входе находится «Истина», то на выходе будет «Ложь». И наоборот. Так, в примере, который будет чуточку ниже, цифра 0 используется в качестве аргумента функции not. Соответственно, в консоли было выведено обратное значение – True (Ведь 0 – это «ложь» в классификации этого языка).

>>> a = not(0)

>>> print(a)

True

Библиотека math

Для проведения вычислений с действительными числами язык Python содержит много дополнительных функций, собранных в библиотеку, которая называется math. Для использования этих функций в начале программы необходимо подключить библиотеку, что делается командой

import math           # подключение модуля библиотеки

После подключения программа получает доступ ко всем функциям, методам и классам, содержащимся в нём. После подключения можно вызвать любую функцию из подключенной библиотеки по следующему правилу: указывается имя модуля и через точку имя функции

имя_модуля.имя_функции

Например, пусть мы хотим вызвать функцию вычисления Синус угла, задаваемого в радианахimport math y = sin(5)         # ошибка не подключен модуль mathx = math.sin(5)    # записываем имя модуля и через точку имя функции

Можно подключать не весь модуль, а какую-то его часть. Например, программист хочет использовать только одну функцию из математической библиотеки math. Если он подключит всю библиотеку, то будет добавлено более 40 функций, которые будут занимать место. Чтобы добавить в проект какую-то часть, используют ключевое слово from

from <имя подключаемого модуля> import <название функции>

Например.

from math import sin       # подключена только одна функция siny = sin(5)                 # операция выполненаx = cos(5)               # ошибка функция cos не подключена

Ниже приведен список основных функций модуля math. Некоторые из перечисленных функций (int, round, abs) являются стандартными и не требуют подключения модуля math для использования.

print() function

The print statement has been replaced with a print() function, with keyword arguments to replace most of the special syntax of the old print statement.

The print statement can be used in the following ways :

  • print(«Good Morning»)
  • print(«Good», <Variable Containing the String>)
  • print(«Good» + <Variable Containing the String>)
  • print(«Good %s» % <variable containing the string>)

In Python, single, double and triple quotes are used to denote a string. Most use single quotes when declaring a single character. Double quotes when declaring a line and triple quotes when declaring a paragraph/multiple lines.

Commands

print(<el_1>, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
  • Use ‘file=sys.stderr’ for errors.
  • Use ‘flush=True’ to forcibly flush the stream.

Pretty Print

from pprint import pprint
pprint(<collection>, width=80, depth=None)

Levels deeper than ‘depth’ get replaced by ‘…’.

Double Quotes Use:

Example:

Output:

Python is very simple language

Single Quotes Use:

Example:

Output:

Hello

Triple Quotes Use:

Example:

Output:

Python is very Popular Language.
It is also friendly language.

Variable Use:

Strings can be assigned to variable say string1 and string2 which can called when using the print statement.

Example:

Output:

Wel come

Example:

Output:

Welcome Python

String Concatenation:

String concatenation is the «addition» of two strings. Observe that while concatenating there will be no space between the strings.

Example:

Output:

WelcomePython:

Using as String:

%s is used to refer to a variable which contains a string.

Example:

Output:

Welcome Python

Using other data types:

Similarly, when using other data types

  • %d -> Integer
  • %e -> exponential
  • %f -> Float
  • %o -> Octal
  • %x -> Hexadecimal

This can be used for conversions inside the print statement itself.

Using as Integer:

Example:

Output:

Actual Number = 15

Using as Exponential:

Example:

Output:

Exponential equivalent of the number = 1.500000e+01

Using as Float:

Example:

Output:

Float of the number = 15.000000

Using as Octal:

Example:

Output:

Octal equivalent of the number = 17

Using as Hexadecimal:

Example:

Output:

Hexadecimal equivalent of the number = f

Using multiple variables:

When referring to multiple variables parenthesis is used.

Example:

Output:

Python World :

Other Examples of Print Statement:

The following are other different ways the print statement can be put to use.

Example-1:

% is used for %d type word

Output:

Welcome to %Python language

Example-2:

\n is used for Line Break.

Output:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday

Example-3:

Any word print multiple times.

Output:

-w3r-w3r-w3r-w3r-w3r

Example-4:

\t is used for tab.

Output:

Language:
        1 Python
        2 Java
        3 JavaScript

Precision Width and Field Width:

Field width is the width of the entire number and precision is the width towards the right. One can alter these widths based on the requirements.

The default Precision Width is set to 6.

Example-1:

Notice upto 6 decimal points are returned. To specify the number of decimal points, ‘%(fieldwidth).(precisionwidth)f’ is used.

Output:

5.123457

Example-2:

Notice upto 5 decimal points are returned

Output:

5.12346

Example-3:

If the field width is set more than the necessary than the data right aligns itself to adjust to the specified values.

Output:

  5.12346

Example-4:

Zero padding is done by adding a 0 at the start of fieldwidth.

Output:

000000005.12346

Example-5:

For proper alignment, a space can be left blank in the field width so that when a negative number is used, proper alignment is maintained.

Output:

 5.123457
-5.123457

Example-6:

‘+’ sign can be returned at the beginning of a positive number by adding a + sign at the beginning of the field width.

Output:

+5.123457
-5.123457

Example-7:

As mentioned above, the data right aligns itself when the field width mentioned is larger than the actually field width. But left alignment can be done by specifying a negative symbol in the field width.

Output:

5.1235   

Test your Python skills with w3resource’s quiz

Сериализация и распаковка нестандартных объектов

Как я упоминал ранее, используя Pickle, вы можете сериализовать свои собственные настраиваемые объекты. Взгляните на следующий пример:

import pickle

class Veggy():
    def __init__(self):
        self.color = ''
    def set_color(self, color):
        self.color = color

cucumber = Veggy()
cucumber.set_color('green')

with open('test_pickle.pkl', 'wb') as pickle_out:
    pickle.dump(cucumber, pickle_out)

with open('test_pickle.pkl', 'rb') as pickle_in:
    unpickled_cucumber = pickle.load(pickle_in)

print(unpickled_cucumber.color)

Как видите, этот пример почти такой же простой, как и предыдущий. Между строками 3 и 7 мы определяем простой класс, который содержит один атрибут и один метод, который изменяет этот атрибут. В строке 9 мы создаем экземпляр этого класса и сохраняем его в переменной cucumber, а в строке 10 мы устанавливаем цвет его атрибута на «зеленый».

Затем, используя те же функции, что и в предыдущем примере, мы сериализуем и отделяем наш только что созданный объект. Выполнение приведенного выше кода приводит к следующему выводу:

$ python unpickle_custom.py
green

Помните, что мы можем распаковать объект только в среде, где класс Veggy либо определен, либо импортирован. Если мы создадим новый скрипт и попытаемся выделить объект без импорта класса Veggy, мы получим «AttributeError». Например, выполните следующий скрипт:

import pickle

with open('test_pickle.pkl', 'rb') as pickle_in:
    unpickled_cucumber = pickle.load(pickle_in)

print(unpickled_cucumber.color)

В выводе приведенного выше скрипта вы увидите следующую ошибку:

$ python unpickle_simple.py
Traceback (most recent call last):
  File "<pyshell#40>", line 2, in <module>
    unpickled_cucumber = pickle.load(pickle_in)
AttributeError: Can't get attribute 'Veggy' on <module '__main__' (built-in)>

Распаковка

Теперь давайте раскроем содержимое тестового файла pickle и вернем наш объект к его исходной форме.

import pickle

with open('test_pickle.pkl', 'rb') as pickle_in:
    unpickled_list = pickle.load(pickle_in)

print(unpickled_list)

Как видите, эта процедура не сложнее, чем когда мы мариновали объект. В строке 3 мы снова открываем наш файл test_pickle.pkl, но на этот раз наша цель – прочитать (r) двоичные данные (b), хранящиеся в нем.

Затем, в строке 5, мы используем метод pickle.load(), чтобы распаковать наш список и сохранить его в переменной unpickled_list.

Затем вы можете распечатать содержимое списка, чтобы убедиться, что он идентичен списку, который мы выбрали в предыдущем примере. Вот результат выполнения приведенного выше кода:

$ python unpickle.py

Производительность

F-строки не только гибкие, но и быстрые. И для сравнения производительности разных подходов к форматированию я подготовил два шаблона:

  • простой, в который нужно вставить всего два значения: строку и число;
  • сложный, данные для которого собираются из разных переменных, а внутри происходит преобразование даты, вещественного числа, а также округление.

Финальная простая строка получается такой:

Сложная строка на выходе такая:

Далее я написал 5 функций, каждая из которых возвращает строку отформатированную одним из способом, а после запустил каждую функцию много раз. Пример всех функций и тестового скрипта можете скачать тут.

После недолгого тестирования я получил следующие результаты:

На простых примерах f-строки показывают самые лучшие результаты.На 25% быстрее %-форматирования и метода format().

Аргументы — ключевые слова

Основные правила:

  1. Ключевые аргументы указываются перечислением ключ=значение
  2. При вызове функции,  аргументы определяются  по имени.
  3. Это позволяет пропускать аргументы или размещать их не по порядку, поскольку интерпретатор Python может использовать предоставленные ключевые слова (ключи) для сопоставления значений с параметрами.

Пример. Используем ключевые слова  name (имя), age (возраст) для функции person()

# Определение функции

def person( name, age ):    print("Name: " + name + " age: " + str(age))

# Вызов функции person

person( age = 24,   name = «Никита» ) person( name = «Мария»,  age = 22 )

Результат

5 способов форматирования строк

1. Конкатенация. Грубый способ форматирования, в котором мы просто склеиваем несколько строк с помощью операции сложения:

2. %-форматирование. Самый популярный способ, который перешел в Python из языка С. Передавать значения в строку можно через списки и кортежи , а также и с помощью словаря. Во втором случае значения помещаются не по позиции, а в соответствии с именами.

3. Template-строки. Этот способ появился в Python 2.4, как замена %-форматированию (), но популярным так и не стал. Поддерживает передачу значений по имени и использует $-синтаксис как в PHP.

4. Форматирование с помощью метода format(). Этот способ появился в Python 3 в качестве замены %-форматированию. Он также поддерживает передачу значений по позиции и по имени.

5. f-строки. Форматирование, которое появилось в Python 3.6 (). Этот способ похож на форматирование с помощью метода format(), но гибче, читабельней и быстрей.

Что можно сериализовать?

Следующие типы можно сериализовать и десериализовать с помощью модуля Pickle:

  • Все собственные типы данных, поддерживаемые Python (логические, None, целые числа, числа с плавающей запятой, комплексные числа, строки, байты, байтовые массивы).
  • Словари, наборы, списки и кортежи – если они содержат выбираемые объекты.
  • Функции и классы, определенные на верхнем уровне модуля.

Важно помнить, что травление не является независимым от языка методом сериализации, поэтому ваши консервированные данные могут быть извлечены только с помощью Python. Более того, важно убедиться, что объекты обрабатываются с использованием той же версии Python, которая будет использоваться для их выделения

В этом случае смешивание версий может вызвать множество проблем.

Кроме того, функции выбираются по ссылкам на их имена, а не по их значениям. Полученный в результате Pickling не содержит информации о коде или атрибутах функции. Следовательно, вы должны убедиться, что среда, в которой функция не выбрана, может импортировать функцию. Другими словами, если мы выберем функцию, а затем удалим ее в среде, где она либо не определена, либо не импортирована, возникнет исключение.

Также очень важно отметить, что маринованные предметы могут использоваться специально. Например, извлечение данных из ненадежного источника может привести к выполнению вредоносного кода.

Список

Список (list) представляет тип данных, который хранит набор или последовательность элементов. Для создания списка в квадратных скобках через запятую перечисляются все его элементы.

Создание пустого списка

numbers = [] 

Создание списка чисел:

numbers =  # имя списка numbers, он содержит 5 элементов

Создание списка слов:

words =  # имя списка words, он  содержит 4 элемента

Создание списка из элементов разного типа

listNum =  # имя списка listNum,    список     содержит целые числа и строки

Для управления элементами списки имеют целый ряд методов. Некоторые из них:

append(item): добавляет элемент item в конец списка
insert(index, item): добавляет элемент item в список по индексу index
remove(item): удаляет элемент item. Удаляется только первое вхождение элемента. Если элемент не найден, генерирует исключение ValueError
clear(): удаление всех элементов из списка
index(item): возвращает индекс элемента item. Если элемент не найден, генерирует исключение ValueError
pop(): удаляет и возвращает элемент по индексу index. Если индекс не передан, то просто удаляет последний элемент.
count(item): возвращает количество вхождений элемента item в список
sort(): сортирует элементы. По умолчанию сортирует по возрастанию. Но с помощью параметра key мы можем передать функцию сортировки.
reverse(): расставляет все элементы в списке в обратном порядке

Кроме того, Python предоставляет ряд встроенных функций для работы со списками:

len(list): возвращает длину списка
sorted(list, ): возвращает отсортированный список
min(list): возвращает наименьший элемент списка

5 функций для отладки

Эти функции часто игнорируются, но будут полезны для отладки и устранения неисправностей кода.

breakpoint

Если нужно приостановить выполнение кода и перейти в командную строку Python, эта функция вам пригодится. Вызов перебросит вас в отладчик Python.

Эта встроенная функция была добавлена в Python 3.7, но если вы работаете в более старых версиях, можете получить тот же результат с помощью .

dir

Эта функция может использоваться в двух случаях:

  • просмотр списка всех локальных переменных;
  • просмотр списка всех атрибутов конкретного объекта.

Из примера можно увидеть локальные переменные сразу после запуска и после создания новой переменной .

Если в передать созданный список , на выходе можно увидеть все его атрибуты.

В выведенном списке атрибутов можно увидеть его типичные методы (, , и т. д.) , а также множество более сложных методов для перегрузки операторов.

vars

Эта функция является своего рода смесью двух похожих инструментов: и .

Когда вызывается без аргументов, это эквивалентно вызову , которая показывает словарь всех локальных переменных и их значений.

Когда вызов происходит с аргументом, получает доступ к атрибуту , который представляет собой словарь всех атрибутов экземпляра.

Перед использованием было бы неплохо сначала обратиться к .

type

Эта функция возвращает тип объекта, который вы ей передаете.

Тип экземпляра класса есть сам класс.

Тип класса — это его метакласс, обычно это .

Атрибут даёт тот же результат, что и функция , но рекомендуется использовать второй вариант.

Функция , кроме отладки, иногда полезна и в реальном коде (особенно в объектно-ориентированном программировании с наследованием и пользовательскими строковыми представлениями).

Обратите внимание, что при проверке типов обычно вместо используется функция. Также стоит понимать, что в Python обычно не принято проверять типы объектов (вместо этого практикуется утиная типизация)

help

Если вы находитесь в Python Shell или делаете отладку кода с использованием , и хотите знать, как работает определённый объект, метод или атрибут, функция поможет вам.

В действительности вы, скорее всего, будете обращаться за помощью к поисковой системе. Но если вы уже находитесь в Python Shell, вызов будет быстрее, чем поиск документации в Google.

Conversion Types in Python Print function

The list of conversion types that are available in the Python print function. 

  • %c – Returns a Single character.
  • %d – Returns a Decimal Integer
  • %i – for Long integer
  • %u – Returns an unsigned decimal integer
  • %e, %E – Returns the floating-point value in exponential notation. 
  • %f – Returns the floating-point value in fixed-point notation. 
  • %g – Returns the shorter value of %f and %e
  • %G – Returns the shorter value of %f and %E
  • %c – Returns a Single character
  • %o – Returns an Octal value
  • %r – Generates string with repr()
  • %s – Converts the value to a string using str() function.
  • %x, %X – Returns the Hexadecimal integer.

Let me use all the available conversion types. For this, we declared a few variables with a numeric value, string, decimal value, and a character.

print function conversion types output

Python print file example

Here, we are opening a file pythonSample.txt (if it exists). Otherwise, it creates that text file in the default directory. Next, the print function prints the statement inside that text file.

Арифметические операторы

Самые классические арифметические операторы – это сложение, вычитание, умножение и деление. Также рассмотрим ряд других, которые также выполняют арифметические действия.

Сложение. Соответствует математическому знаку +. Выполняет стандартную арифметическую операцию сложения. Синтаксис функции такой же, как и в математике: операнд 1 + операнд 2.

Например.

>>> 4+4

Вывод: 8.

Вычитание. Выполняет стандартную арифметическую операцию вычитания. Первый операнд – это первое число, а второй – это второе число соответственно. Сам оператор выглядит точно так же, как и математический знак минуса.

>>> 3-4

-1

Умножение. Умножает первое число на такое количество раз, которое указано во втором числе. 

Также в качестве операнд, как и во всех остальных случаях, могут использоваться переменные. В этом случае осуществляется умножение переменной 1 на переменную 2. 

>>> 5*5

25

Деление. Последовательность действий такая же самая, как и с умножением: сначала идет операнд 1, потом знак деления (/), а потом – операнд 2.

>>> 3/4

0.75 

Возведение в степень. Берет число 1 и возводит в степень числа 2.

>>> 3**4

81

Деление без остатка. Все мы знаем, что после деления может оставаться остаток, если не получается разделить число на другое число непосредственно. С помощью этого оператора мы можем получить целое число, если разделить напрямую не получается. Например.

>>> 4//3

1

>>> 10//3

3

Деление по модулю. Выполняет похожую операцию на предыдущий пример, только возвращает как раз остаток. Этот оператор – знак процента, который находится между операндами. Например:

>>> 3%4

3

Использование модуля

В следующем очень простом примере показаны основы использования модуля Pickle в Python 3:

import pickle

test_list = 

with open('test_pickle.pkl', 'wb') as pickle_out:
    pickle.dump(test_list, pickle_out)

Во-первых, мы должны импортировать модуль pickle, что выполняется в строке 1. В строке 3 мы определяем простой список из трех элементов, который будет обработан.

В строке 5 мы указываем, что имя нашего выходного файла pickle будет test_pickle.pkl. Используя параметр wb, мы сообщаем программе, что хотим записать (w) двоичные данные (b) внутри нее (потому что мы хотим создать поток байтов)

Обратите внимание, что расширение pkl не обязательно – мы используем его в этом руководстве, потому что это расширение включено в документацию Python.

В строке 6 мы используем метод pickle.dump(), чтобы собрать наш тестовый список и сохранить его в файле test_pickle.pkl.

Я рекомендую вам попробовать открыть сгенерированный файл pickle в текстовом редакторе. Вы быстро заметите, что поток байтов определенно не является удобочитаемым форматом.

A note on `range`

The function is seen so often in for statements that you might think range is part of the for syntax. It is not: it is a Python built-in function which returns a sequence following a specific pattern (most often sequential integers), which thus meets the requirement of providing a sequence for the for statement to iterate over. Since for can operate directly on sequences, and there is often no need to count. This is a common beginner construct (if they are coming from another language with different loop syntax):

mylist = 
for i in range(len(mylist)):
    # do something with mylist

It can be replaced with this:

mylist = 
for v in mylist:
    # do something with v

Consider for var in range(len(something)): to be a flag for possibly non-optimal Python coding.

Special Characters in Python Print Function

The Python programming language allows you to use special characters by using escape characters. For example, within s1 (‘Hi there, \ “How are You?\”‘), we used \ character to escape double quotes within the print statement. Next, we used \ to escape ‘(single quote) in print (‘I Can\’t Do that’).

print function with special Characters output

The first print statement returns three new lines. And the last statement prints 5 new lines.

This print function example is the same as the above — however, this time, we used three empty lines in between the two strings Hi and Hello.

print function with empty lines output

In this example, we are using the New Line, Horizontal Tab, Vertical Tab, etc., in between a string to show you how they alter the output. For example, the first statement with \n prints Hi there, in the first line and How are You? in the next line.

print function with New Line, Horizontal Tab, and Vertical Tab output

Битовые операторы

На практике, используются довольно редко. Но применяются. И знать их тоже надо. 

Для начала надо раскрыть, что такое побитовые операции в целом. Они выполняются над разрядами числа по специальным формулам, каждая из которых зависит от операторов.

Поэтому важно рассмотреть их более подробно. Бинарное И (&)

Полный аналог оператора and, только который работает с битами. Точно так же, как и любой другой битовый оператор, он выполняет операции с каждой парой битов по отдельности, осуществляя с ними действия в соответствии с этой таблицей

Бинарное И (&). Полный аналог оператора and, только который работает с битами. Точно так же, как и любой другой битовый оператор, он выполняет операции с каждой парой битов по отдельности, осуществляя с ними действия в соответствии с этой таблицей.

0 & 0 = 0

0 & 1 = 0

1 & 0 = 0

1 & 1 = 1

То есть, если первый бит в первой последовательности будет 0 и во второй последовательности битов первый бит будет 0, то после выполнения этой операции получится значение 0. 

Точно так же и с каждым последующим битом. Предположим, у нас есть две последовательности:

00100101

00111010

После того, как каждая из этих последовательностей битов будет обработана оператором, получится следующая последовательность:

00100000

Естественно, передавать значения можно и в десятичной форме. В таком случае они будут преобразованы в двоичную и выполнены соответствующие вычисления. А потом они снова будут преобразованы в десятичную систему. 

Например, если выполнить побитовое «И» с числами 2 и 3, то получится две последовательности битов в двоичной форме:

10

11

Если сопоставить с таблицей выше, то после побитового И будет выдан следующий результат:

10.

То есть, на вывод уйдет цифра 2, поскольку после выполнения операции побитового И 1 и 1 дали 1, а 0 и 1 дали 0. В результате, получилось значение 10, что соответствует 2.

По аналогичному принципу работают и другие бинарные операторы.

Бинарное ИЛИ (|). Соответствует побитовой операции or

Общая таблица сопоставления битов с использованием этого оператора следующая.

0 | 0 = 0

0 | 1 = 1

1 | 0 = 1

1 | 1 = 1

То есть, если ввести такую строку кода, получится на выходе 3.

>>> 2|3

Почему? Потому что эти две десятичные цифры переводятся в следующие две последовательности.

10

11

1 на 1 дает 1, и 0 на 1 дает 1. Соответственно, получилось число 11 в двоичной форме, что соответствует 3 в десятичной. Поэтому такой вывод.

Бинарное ИЛИ НЕТ (^). С помощью этой функции выполняется исключающее между двумя операндами, переведенными в двоичную форму. Сопоставление осуществляется по таким правилам.

0 ^ 0 = 0

0 ^ 1 = 1

1 ^ 0 = 1

1 ^ 1 = 0

Таким образом, если выполнить соответствующую операцию с теми же самыми числами, то получится в результате 1. Ведь цифра 2 у нас 10, а 11 – это 3. Таким образом, если сопоставить разряды по правилам, получится в итоге 01.

>>> 2^3

10

11

––

01

Инвертирующий оператор. С его помощью пользователь может инвертировать 0 в 1 и наоборот.

Например, если применить его к 2, то получится в результате -3. Почему? Потому что в двоичном формате цифра 2 – это 00000010. Если же ее инвертировать, то получится 11111101, что соответствует двоичной -3. Таким образом, получится в итоге обычная 2. 

Естественно, работает все и абсолютно наоборот. Ведь если 11111101 заменить на противоположные значения, то получится на выходе та же цифра 3.

Бинарный сдвиг влево и вправо. Осуществляет сдвиг левого оператора на ту позицию, которая есть справа. Например, если попробовать сдвинуть вправо бинарную 3 (то есть, 11) на два положения влево, то в результате получится число 00, поскольку единицы ушли за пределы разряда.

И такой принцип дальше. То есть, первый операнд – это то число, сдвиг которого надо осуществить. Второй же операнд – количество бит, на которое необходимо его выполнить.

Пример.

>>> 3>>2

>>> 3>>1

Погружене в f-строки

f-строки делают очень простую вещь — они берут значения переменных, которые есть в текущей области видимости, и подставляют их в строку. В самой строке вам лишь нужно указать имя этой переменной в фигурных скобках.

f-строки также поддерживают расширенное форматирование чисел:

С помощью f-строк можно форматировать дату без вызова метода strftime():

Они поддерживают базовые арифметические операции. Да, прямо в строках:

Позволяют обращаться к значениям списков по индексу:

А также к элементам словаря по ключу:

Причем вы можете использовать как строковые, так и числовые ключи. Точно также как в обычном Python коде:

Вы можете вызывать в f-строках методы объектов:

А также вызывать функции:

f-строки очень гибкий и мощный инструмент для создания самых разнообразных шаблонов.

Со всеми возможностя f-строк вы можете ознакомится в PEP498.

Usage in Python

When do I use for loops?

for loops are traditionally used when you have a block of code which you want to repeat a fixed number of times. The Python for statement iterates over the members of a sequence in order, executing the block each time. Contrast the for statement with the »while» loop, used when a condition needs to be checked each iteration, or to repeat a block of code forever. For example:

For loop from 0 to 2, therefore running 3 times.

for x in range(0, 3):
    print("We're on time %d" % (x))

While loop from 1 to infinity, therefore running forever.

x = 1
while True:
    print("To infinity and beyond! We're getting close, on %d now!" % (x))
    x += 1

As you can see, these loop constructs serve different purposes. The for loop runs for a fixed amount — in this case, 3, while the while loop runs until the loop condition changes; in this example, the condition is the boolean True which will never change, so it could theoretically run forever. You could use a for loop with a huge number in order to gain the same effect as a while loop, but what’s the point of doing that when you have a construct that already exists? As the old saying goes, «why try to reinvent the wheel?».

How do they work?

If you’ve done any programming before, you have undoubtedly come across a for loop or an equivalent to it. Many languages have conditions in the syntax of their for loop, such as a relational expression to determine if the loop is done, and an increment expression to determine the next loop value. In Python this is controlled instead by generating the appropriate sequence. Basically, any object with an iterable method can be used in a for loop. Even strings, despite not having an iterable method — but we’ll not get on to that here. Having an iterable method basically means that the data can be presented in list form, where there are multiple values in an orderly fashion. You can define your own iterables by creating an object with next() and iter() methods. This means that you’ll rarely be dealing with raw numbers when it comes to for loops in Python — great for just about anyone!

Nested loops

When you have a block of code you want to run x number of times, then a block of code within that code which you want to run y number of times, you use what is known as a «nested loop». In Python, these are heavily used whenever someone has a list of lists — an iterable object within an iterable object.

for x in range(1, 11):
    for y in range(1, 11):
        print('%d * %d = %d' % (x, y, x*y))

Early exits

Like the while loop, the for loop can be made to exit before the given object is finished. This is done using the break statement, which will immediately drop out of the loop and contine execution at the first statement after the block. You can also have an optional else clause, which will run should the for loop exit cleanly — that is, without breaking.

for x in range(3):
    if x == 1:
        break

Python print String Format

We are using the print function along with conversion types. Within the first print statement, we used two %s in between a string follows by a tuple with variables. It means print function replace those two %s items with those tuple values.

Here, Python print function uses the same order that we specified. I mean, first, %s is replaced by a person variable, and the second %s replaced by name variable value. Here, print(person +’ is working at ‘+ name) statement is to concat three items.

print function and string formatting output

Python print format Example

It is an example of a Python print format function. In this example, we are using the format function inside the print function. It allows us to format values. I suggest you refer to the Python format Function article.

print and format functions output

Кавычки

Одинарные кавычки

Строку можно указать, используя одинарные кавычки, как например, ‘Это строка’.  Любой одиночный символ в кавычках, например,  ‘ю’  — это строка. Пустая строка » — это тоже строка. То есть строкой мы считаем всё, что находится внутри кавычек.

Двойные кавычки

Запись строки в одинарных кавычках  это не единственный способ. Можно использовать и двойные кавычки, как например, »Это строка».  Для интерпретатора разницы между записями строки в одинарных и двойных кавычках нет.  

ВниманиеЕсли  строка началась с двойной кавычки — значит и закончиться должна на двойной кавычке. Если внутри строки мы хотим использовать двойные кавычки, то саму строку надо делать в одинарных кавычках. 

Театр »Современник»print(‘Театр »Современник»’)

Тройные кавычки

Строка, занимающая несколько строк,  должна быть обрамлена тройными кавычками (» » »  или »’).  Например:

Сравнение pickle и JSON

Возможно, вы слышали о JSON (нотация объектов JavaScript), который является популярным форматом, который также позволяет разработчикам сохранять и передавать объекты, закодированные в виде строк. Этот метод сериализации имеет некоторые преимущества перед сохранением. Формат JSON удобочитаем, не зависит от языка и быстрее, чем pickle.

Однако у него есть и некоторые важные ограничения

Что наиболее важно, по умолчанию только ограниченное подмножество встроенных типов Python может быть представлено JSON. С помощью Pickle мы можем легко сериализовать очень широкий спектр типов Python и, что важно, настраиваемые классы

Это означает, что нам не нужно создавать настраиваемую схему (как мы делаем для JSON) и писать сериализаторы и парсеры, подверженные ошибкам. С Pickle вся тяжелая работа будет сделана за вас.

Заключение

Как видите, благодаря модулю Pickle сериализация объектов Python довольно проста. В наших примерах мы выбрали простой список, но вы можете использовать тот же метод для сохранения большого спектра типов данных Python, если вы убедитесь, что ваши объекты содержат только другие выбираемые объекты.

У Pickling есть некоторые недостатки, самый большой из которых может заключаться в том, что вы можете распаковать свои данные только с помощью Python – если вам нужно кросс-языковое решение, JSON определенно лучший вариант. И, наконец, помните, что сериализованные объекты можно использовать для переноса кода, который вы не обязательно хотите выполнять.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector