Встроенные функции

Стилевое оформление

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

from openpyxl.styles import Font

Ниже приведен пример создания новой рабочей книги, в которой для шрифта, используемого в ячейке , устанавливается шрифт , красный цвет, курсивное начертание и размер 24 пункта:

import openpyxl
from openpyxl.styles import Font

# создаем новый excel-файл
wb = openpyxl.Workbook()
# добавляем новый лист
wb.create_sheet(title = 'Первый лист', index = )
# получаем лист, с которым будем работать
sheet = wb'Первый лист'

font = Font(name='Arial', size=24, italic=True, color='FF0000')
sheet'A1'.font = font
sheet'A1' = 'Здравствуй мир!'

# записываем файл
wb.save('example.xlsx')

Именованные стили применяются, когда надо применить стилевое оформление к большому количеству ячеек.

import openpyxl
from openpyxl.styles import NamedStyle, Font, Border, Side

# создаем новый excel-файл
wb = openpyxl.Workbook()
# добавляем новый лист
wb.create_sheet(title = 'Первый лист', index = )
# получаем лист, с которым будем работать
sheet = wb'Первый лист'

# создаем именованный стиль
ns = NamedStyle(name='highlight')
ns.font = Font(bold=True, size=20)
border = Side(style='thick', color='000000')
ns.border = Border(left=border, top=border, right=border, bottom=border)

# вновь созданный именованный стиль надо зарегистрировать
# для дальнейшего использования
wb.add_named_style(ns)

# теперь можно использовать именованный стиль
sheet'A1'.style = 'highlight'

# записываем файл
wb.save('example.xlsx')

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

Рассмотрим полную версию программы с функцией:

def countFood():
    a = int(input())
    b = int(input())
    print("Всего", a+b, "шт.")

print("Сколько бананов и ананасов для обезьян?")
countFood()

print("Сколько жуков и червей для ежей?")
countFood()

print("Сколько рыб и моллюсков для выдр?")
countFood()

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

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

В языке Python определение функции должно предшествовать ее вызовам. Это связано с тем, что интерпретатор читает код строка за строкой и о том, что находится ниже по течению, ему еще неизвестно. Поэтому если вызов функции предшествует ее определению, то возникает ошибка (выбрасывается исключение NameError):

print("Сколько бананов и ананасов для обезьян?")
countFood()

print("Сколько жуков и червей для ежей?")
countFood()

print("Сколько рыб и моллюсков для выдр?")
countFood()

def countFood():
    a = int(input())
    b = int(input())
    print("Всего", a+b, "шт.")

Результат:

Сколько бананов и ананасов для обезьян?
Traceback (most recent call last):
  File "test.py", line 2, in <module>
    countFood()
NameError: name 'countFood' is not defined

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

The Placeholders

The placeholders can be identified using named indexes
, numbered
indexes , or even empty placeholders
.

Example

Using different placeholder values:

txt1 = «My
name is {fname}, I’m {age}».format(fname = «John», age = 36)txt2 = «My
name is {0}, I’m {1}».format(«John»,36)txt3 = «My
name is {}, I’m {}».format(«John»,36)

Formatting Types

Inside the placeholders you can add a formatting type to format the
result:

Try it Left aligns the result (within the available space)
Try it Right aligns the result (within the available space)
Try it Center aligns the result (within the available space)
Try it Places the sign to the left most position
Try it Use a plus sign to indicate if the result is positive or negative
Try it Use a minus sign for negative values only
Try it Use a space to insert an extra space before positive numbers (and a minus sign befor negative numbers)
Try it Use a comma as a thousand separator
Try it Use a underscore as a thousand separator
Try it Binary format
Converts the value into the corresponding unicode character
Try it Decimal format
Try it Scientific format, with a lower case e
Try it Scientific format, with an upper case E
Try it Fix point number format
Try it Fix point number format, in uppercase format (show
and
as
and )
General format
General format (using a upper case E for scientific notations)
Try it Octal format
Try it Hex format, lower case
Try it Hex format, upper case
Number format
Try it Percentage format

Format Strings

Format strings consist of intermingled character data and markup.

Character data is data which is transferred unchanged from the
format string to the output string; markup is not transferred from
the format string directly to the output, but instead is used to
define ‘replacement fields’ that describe to the format engine
what should be placed in the output string in place of the markup.

Brace characters (‘curly braces’) are used to indicate a
replacement field within the string:

"My name is {0}".format('Fred')

The result of this is the string:

"My name is Fred"

Braces can be escaped by doubling:

"My name is {0} :-{{}}".format('Fred')

Which would produce:

"My name is Fred :-{}"

Вводная информация о строках

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

Литералы строк

Литерал – способ создания объектов, в случае строк Питон предлагает несколько основных вариантов:

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

Разницы между строками с одинарными и двойными кавычками нет – это одно и то же

Какие кавычки использовать – решать вам, соглашение PEP 8 не дает рекомендаций по использованию кавычек. Просто выберите один тип кавычек и придерживайтесь его. Однако если в стоке используются те же кавычки, что и в литерале строки, используйте разные типы кавычек – обратная косая черта в строке ухудшает читаемость кода.

Кодировка строк

В третьей версии языка программирования Python все строки представляют собой последовательность Unicode-символов.

В Python 3 кодировка по умолчанию исходного кода – UTF-8. Во второй версии по умолчанию использовалась ASCII. Если необходимо использовать другую кодировку, можно разместить специальное объявление на первой строке файла, к примеру:

Максимальная длина строки в Python

Максимальная длина строки зависит от платформы. Обычно это:

  • 2**31 — 1 – для 32-битной платформы;
  • 2**63 — 1 – для 64-битной платформы;

Константа , определенная в модуле

Конкатенация строк

Одна из самых распространенных операций со строками – их объединение (конкатенация). Для этого используется знак , в результате к концу первой строки будет дописана вторая:

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

Сравнение строк

При сравнении нескольких строк рассматриваются отдельные символы и их регистр:

  • цифра условно меньше, чем любая буква из алфавита;
  • алфавитная буква в верхнем регистре меньше, чем буква в нижнем регистре;
  • чем раньше буква в алфавите, тем она меньше;

При этом сравниваются по очереди первые символы, затем – 2-е и так далее.

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

Как удалить строку в Python

Строки, как и некоторые другие типы данных в языке Python, являются неизменяемыми объектами. При задании нового значения строке просто создается новая, с заданным значением. Для удаления строки можно воспользоваться методом , заменив ее на пустую строку:

Или перезаписать переменную пустой строкой:

Обращение по индексу

Для выбора определенного символа из строки можно воспользоваться обращением по индексу, записав его в квадратных скобках:

Индекс начинается с 0

В Python предусмотрена возможность получить доступ и по отрицательному индексу. В таком случае отсчет будет вестись от конца строки:

Python F-Строки: Детали

На данный момент мы узнали почему f-строки так хороши, так что вам уже может быть интересно их попробовать в работе. Рассмотрим несколько деталей, которые нужно учитывать:

Кавычки

Вы можете использовать несколько типов кавычек внутри выражений. Убедитесь в том, что вы не используете один и тот же тип кавычек внутри и снаружи f-строки.

Этот код будет работать:

Python

print(f»{‘Eric Idle’}»)
# Вывод: ‘Eric Idle’

1
2

print(f»{‘Eric Idle’}»)

# Вывод: ‘Eric Idle’

И этот тоже:

Python

print(f'{«Eric Idle»}’)
# Вывод: ‘Eric Idle’

1
2

print(f'{«Eric Idle»}’)

# Вывод: ‘Eric Idle’

Вы также можете использовать тройные кавычки:

Python

print(f»»»Eric Idle»»»)
# Вывод: ‘Eric Idle’

1
2

print(f»»»Eric Idle»»»)

# Вывод: ‘Eric Idle’

Python

print(f»’Eric Idle»’)
# Вывод: ‘Eric Idle’

1
2

print(f»’Eric Idle»’)

# Вывод: ‘Eric Idle’

Если вам понадобиться использовать один и тот же тип кавычек внутри и снаружи строки, вам может помочь :

Python

print(f»The \»comedian\» is {name}, aged {age}.»)
# Вывод: ‘The «comedian» is Eric Idle, aged 74.’

1
2

print(f»The \»comedian\» is {name}, aged {age}.»)

# Вывод: ‘The «comedian» is Eric Idle, aged 74.’

Словари

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

Вот так:

Python

comedian = {‘name’: ‘Eric Idle’, ‘age’: 74}

print(f»The comedian is {comedian}, aged {comedian}.»)
# Вывод: The comedian is Eric Idle, aged 74.

1
2
3
4

comedian={‘name»Eric Idle’,’age’74}

print(f»The comedian is {comedian}, aged {comedian}.»)

# Вывод: The comedian is Eric Idle, aged 74.

Обратите внимание на количество возможных проблем, если допустить ошибку в синтаксисе SyntaxError:

Python

>>> comedian = {‘name’: ‘Eric Idle’, ‘age’: 74}
>>> f’The comedian is {comedian}, aged {comedian}.’
File «<stdin>», line 1
f’The comedian is {comedian}, aged {comedian}.’
^
SyntaxError: invalid syntax

1
2
3
4
5
6

>>>comedian={‘name»Eric Idle’,’age’74}

>>>f’The comedian is {comedian}, aged {comedian}.’

File»<stdin>»,line1

f’The comedian is {comedian}, aged {comedian}.’

^

SyntaxErrorinvalid syntax

Если вы используете одиночные кавычки в ключах словаря и снаружи f-строк, тогда кавычка в начале ключа словаря будет интерпретирован как конец строки.

Скобки

Чтобы скобки появились в вашей строке, вам нужно использовать двойные скобки:

Python

print(f»`74`»)

# Вывод: ‘{ 74 }’

1
2
3

print(f»`74`»)

 
# Вывод: ‘{ 74 }’

Обратите внимание на то, что использование тройных скобок приведет к тому, что в строке будут только одинарные:

Python

print( f»{`74`}» )

# Вывод: ‘{ 74 }’

1
2
3

print(f»{`74`}»)

 
# Вывод: ‘{ 74 }’

Однако, вы можете получить больше отображаемых скобок, если вы используете больше, чем три скобки:

Python

print(f»{{`74`}}»)

# Вывод: ‘`74`’

1
2
3

print(f»{{`74`}}»)

 
# Вывод: ‘`74`’

Бэкслеши

Как вы видели ранее, вы можете использовать бэкслеши в части строки f-string. Однако, вы не можете использовать бэкслеши в части выражения f-string:

Python

>>> f»{\»Eric Idle\»}»
File «<stdin>», line 1
f»{\»Eric Idle\»}»
^
SyntaxError: f-string expression part cannot include a backslash

1
2
3
4
5

>>>f»{\»Eric Idle\»}»

File»<stdin>»,line1

f»{\»Eric Idle\»}»

^

SyntaxErrorf-stringexpression part cannot includeabackslash

Вы можете проработать это, оценивая выражение заранее и используя результат в f-строк:

Python

name = «Eric Idle»
print(f»{name}»)

# Вывод: ‘Eric Idle’

1
2
3
4

name=»Eric Idle»

print(f»{name}»)

 
# Вывод: ‘Eric Idle’

Междустрочные комментарии

Выражения не должны включать комментарии с использованием символа #. В противном случае, у вас будет ошибка синтаксиса SyntaxError:

Python

>>> f»Eric is {2 * 37 #Oh my!}.»
File «<stdin>», line 1
f»Eric is {2 * 37 #Oh my!}.»
^
SyntaxError: f-string expression part cannot include ‘#’

1
2
3
4
5

>>>f»Eric is {2 * 37 #Oh my!}.»

File»<stdin>»,line1

f»Eric is {2 * 37 #Oh my!}.»

^

SyntaxErrorf-stringexpression part cannot include’#’

Практическая работа

В программировании можно из одной функции вызывать другую. Для иллюстрации этой возможности напишите программу по следующему описанию.

Основная ветка программы, не считая заголовков функций, состоит из одной строки кода. Это вызов функции test(). В ней запрашивается на ввод целое число. Если оно положительное, то вызывается функция positive(), тело которой содержит команду вывода на экран слова «Положительное». Если число отрицательное, то вызывается функция negative(), ее тело содержит выражение вывода на экран слова «Отрицательное».

Понятно, что вызов test() должен следовать после определения функций. Однако имеет ли значение порядок определения самих функций? То есть должны ли определения positive() и negative() предшествовать test() или могут следовать после него? Проверьте вашу гипотезу, поменяв объявления функций местами. Попробуйте объяснить результат.

Добавление формул

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

sheet'B9' = '=SUM(B1:B8)'

Эта инструкция сохранит в качестве значения в ячейке . Тем самым для ячейки задается формула, которая суммирует значения, хранящиеся в ячейках от до .

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

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

Примеры формул Excel: =27+36, =А1+А2-АЗ, =SUM(А1:А5), =MAX(АЗ:А5), =(А1+А2)/АЗ.

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

3.2. Первые шаги к программированию

Конечно мы можем использовать Python для более сложных задач, чем складывать вместе два и два. Например, мы можем написать начальную часть последовательности ряда Фибоначчи вот так:

Этот пример знакомит с несколькими новыми свойствами.

Первая строка содержит множественное присваивание: переменные и одновременно получают новые значения 0 и 1. В последней строке это используется опять, демонстрируя, что сначала выражения с правой стороны полностью оцениваются, прежде чем произойдет какое-либо присваивание. Выражения с правой стороны выполняются слева направо.
Цикл while (docs.python.org/3/reference/compound_stmts.html#while) выполняется до тех пор, пока условие (здесь ) остается верным. В Python, как в C, любое ненулевое численное значение является правдой; ноль является ложью. Условие может также быть строкой или списком, в действительности любой последовательностью; все с ненулевой длинной является правдой, пустая последовательность является ложью. Проверка, используемая в примере, является простым сравнением. Стандартные операторы сравнения записываются также как в C: (меньше, чем), (больше, чем), (равно), (меньше или равно), (больше или равно) и (не равно).
Тело цикла имеет отступ: в Python отступ — это способ группировки выражений. В интерактивном режиме вы должны ввести табуляцию или пробел(ы) для каждой строки с отступом. На практике вы будете подготавливать более сложный ввод для Python с помощью текстового редактора; все приличные текстовые редакторы имеют автоматическую установку отступов. Когда составное выражение вводится в интерактивном режиме, за ним должна следовать пустая строка, чтобы указать завершение (поскольку синтаксический анализатор не может угадать, когда вы ввели последнюю строку)

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

Строки печатаются без кавычек, и между элементами вставляются пробелы, таким образом вы можете красиво форматировать объекты, подобно этому:

Аргумент ключевое слово end может быть использовано для отмены новой строки после вывода, или окончания вывода другой строкой:

Примечания

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

Цикл for и range()

Итак, зачем нам понадобилась функций range() в теме про цикл for? Дело в том, что вместе они образуют неплохой тандем. For как цикл перебора элементов, в отличие от while, позволяет не следить за тем, достигнут ли конец структуры. Не надо вводить счетчик для этого, изменять его и проверять условие в заголовке. С другой стороны, range() дает последовательность целых чисел, которые можно использовать как индексы для элементов того же списка.

>>> range(len(spisok))
range(0, 4)

Здесь с помощью функции len() измеряется длина списка. В данном случае она равна четырем. После этого число 4 передается в функцию range(), и она генерирует последовательность чисел от 0 до 3 включительно. Это как раз индексы элементов нашего списка.

Теперь «соединим» for и range():

>>> for i in range(len(spisok)):
...     spisok += 2
...
>>> spisok

В заголовке цикла for берутся элементы вовсе не списка, а объекта range. Список, элементы которого планируется перезаписывать, тут по-сути не фигурирует. Если заранее знать длину списка, то заголовок может выглядеть так: . То, как используется i в теле цикла, вопрос второй. Примечание. Вместо идентификатора может быть любой другой.

AIDA64

Если вы всерьёз задумались о «разгоне» центрального процессора или просто хотите лучше контролировать его состояние, вам пригодится специальная программа. Ведь что такое cpu в компьютере и его температура? Это то же самое, что и температура у человека. У него также есть средняя температура, считающаяся нормой. Программа AIDA64 — градусник для вашего центрального процессора. Для определения степени «болезни» вашего ЦПУ, вы должны будете установить её на ваш персональный компьютер. Эта программа воспользуется установленными датчиками и выдаст вам результат.

Результатом работы будут следующие значения: ЦП, cpu package, cpu gt cores и температуры каждого ядра процессора. В первую очередь, нас интересует второй пункт. Что такое cpu package? Это температура под теплораспределительной крышкой процессора. Именно она является практически главным показателем температуры вашего процессора. Запомните, что нормальная температура процессора в режиме ожидания составляет до 45 градусов по цельсию. В рабочем режиме — до 65. Если температура переваливает за 70, то ваш процессор «болен», а значит, необходимо срочно искать и устранять причины неисправности.

Format Specifiers

Each field can also specify an optional set of ‘format
specifiers’ which can be used to adjust the format of that field.
Format specifiers follow the field name, with a colon (‘:’)
character separating the two:

"My name is {0:8}".format('Fred')

The meaning and syntax of the format specifiers depends on the
type of object that is being formatted, but there is a standard
set of format specifiers used for any object that does not
override them.

Format specifiers can themselves contain replacement fields.
For example, a field whose field width is itself a parameter
could be specified via:

"{0:{1}}".format(a, b)

These ‘internal’ replacement fields can only occur in the format
specifier part of the replacement field. Internal replacement fields
cannot themselves have format specifiers. This implies also that
replacement fields cannot be nested to arbitrary levels.

Note that the doubled ‘}’ at the end, which would normally be
escaped, is not escaped in this case. The reason is because
the ‘{{‘ and ‘}}’ syntax for escapes is only applied when used
outside of a format field. Within a format field, the brace
characters always have their normal meaning.

Числа

Целые числа, числа с плавающей запятой и комплексные числа относятся к группе чисел. В Python они представлены классами , и .

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

Целые числа могут быть любой длины, они ограничиваются лишь доступной памятью.

Интенсив «Чат-бот с искусственным интеллектом на Python»

21–23 декабря, Онлайн, Беcплатно

tproger.ru

События и курсы на tproger.ru

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

Комплексные числа записываются в форме , где — действительная часть числа, а — мнимая. Вот несколько примеров:

Обратите внимание, что значение переменной было усечено

Функция map():

Функция map() является типом высшего порядка. Как упоминалось ранее, эта функция принимает другую функцию в качестве параметра вместе с итерируемой последовательностью и возвращает выходные данные после применения функции на каждый итерируемый элемент из последовательности. Синтаксис выглядит следующим образом:

map(function, iterables)

Здесь функция определяет выражение, которое в свою очередь применяется к итерируемым элементам. Функция map может принимать функции, которые определил сам пользователь, а также лямбда-функции в качестве параметра.

Помимо того, мы писали уже про задачу, как можно сконвертировать список с применением функции map().

Дзен Питона

Если интерпретатору Питона дать команду («импортируй это» здесь видимо следует понимать как «импортируй самого себя»), то выведется так называемый «Дзен Питона», иллюстрирующий идеологию и особенности данного языка. Понимание смысла этих постулатов в приложении к программированию придет тогда, когда вы освоите язык в полной мере и приобретете опыт практического программирования.

  • Beautiful is better than ugly. Красивое лучше уродливого.
  • Explicit is better than implicit. Явное лучше неявного.
  • Simple is better than complex. Простое лучше сложного.
  • Complex is better than complicated. Сложное лучше усложнённого.
  • Flat is better than nested. Плоское лучше вложенного.
  • Sparse is better than dense. Разрежённое лучше плотного.
  • Readability counts. Удобочитаемость важна.
  • Special cases aren’t special enough to break the rules. Частные случаи не настолько существенны, чтобы нарушать правила.
  • Although practicality beats purity. Однако практичность важнее чистоты.
  • Errors should never pass silently. Ошибки никогда не должны замалчиваться.
  • Unless explicitly silenced. За исключением замалчивания, которое задано явно.
  • In the face of ambiguity, refuse the temptation to guess. Перед лицом неоднозначности сопротивляйтесь искушению угадать.
  • There should be one — and preferably only one — obvious way to do it. Должен существовать один — и, желательно, только один — очевидный способ сделать это.
  • Although that way may not be obvious at first unless you’re Dutch. Хотя он может быть с первого взгляда не очевиден, если ты не голландец.
  • Now is better than never. Сейчас лучше, чем никогда.
  • Although never is often better than *right* now. Однако, никогда чаще лучше, чем прямо сейчас.
  • If the implementation is hard to explain, it’s a bad idea. Если реализацию сложно объяснить — это плохая идея.
  • If the implementation is easy to explain, it may be a good idea. Если реализацию легко объяснить — это может быть хорошая идея.
  • Namespaces are one honking great idea — let’s do more of those! Пространства имён — прекрасная идея, давайте делать их больше!

Controlling Formatting on a Per-Type Basis

Each Python type can control formatting of its instances by defining
a __format__ method. The __format__ method is responsible for
interpreting the format specifier, formatting the value, and
returning the resulting string.

The new, global built-in function ‘format’ simply calls this special
method, similar to how len() and str() simply call their respective
special methods:

def format(value, format_spec):
    return value.__format__(format_spec)

It is safe to call this function with a value of «None» (because the
«None» value in Python is an object and can have methods.)

Several built-in types, including ‘str’, ‘int’, ‘float’, and ‘object’
define __format__ methods. This means that if you derive from any of
those types, your class will know how to format itself.

The object.__format__ method is the simplest: It simply converts the
object to a string, and then calls format again:

class object:
    def __format__(self, format_spec):
        return format(str(self), format_spec)

The __format__ methods for ‘int’ and ‘float’ will do numeric formatting
based on the format specifier. In some cases, these formatting
operations may be delegated to other types. So for example, in the case
where the ‘int’ formatter sees a format type of ‘f’ (meaning ‘float’)
it can simply cast the value to a float and call format() again.

Any class can override the __format__ method to provide custom
formatting for that type:

class AST:
    def __format__(self, format_spec):
        ...

Note for Python 2.x: The ‘format_spec’ argument will be either
a string object or a unicode object, depending on the type of the
original format string. The __format__ method should test the type
of the specifiers parameter to determine whether to return a string or
unicode object. It is the responsibility of the __format__ method
to return an object of the proper type.

Совместное использование с функциями, определяемыми пользователем и Lambda-функциями:

Пользовательские функции совместно с map(): 

Функция map() может принимать пользовательские функции в качестве параметров. Параметры этих функций устанавливаются исключительно пользователем или программистом.

Пример:

def newfunc(a):
    return a*a

x = map(newfunc, (1,2,3,4)) # x - это объект типа map
print(x)
print(set(x))

Результат:

<map object at 0x00000284B9AEA940>

Вы также можете передать несколько списков в качестве параметров.

Пример:

def func(a, b):
    return a + b

a = map(func, , )
print(a)
print(tuple(a))

Результат:

<map object at 0x00000284B9BA1E80>
(3, 6, 8)

Теперь давайте посмотрим, как вы можете использовать lambda-функции внутри map().

Lambda-функции совместно с map():

Lambda-функции — это функции, которые являются анонимными и им не нужно указывать какое-то собственное имя, как это происходит с пользовательскими функциями. Эти функции часто передаются в качестве параметров другим функциям.Теперь давайте попробуем применить lambda-функции совместно с функцией map(). Рассмотрим следующий пример:

tup = (5, 7, 22, 97, 54, 62, 77, 23, 73, 61)
newtuple = tuple(map(lambda x: x+3 , tup)) 
print(newtuple)

Результат:

(8, 10, 25, 100, 57, 65, 80, 26, 76, 64)

Приведенный выше вывод является результатом применения lambda-выражения (x + 3) к каждому элементу, присутствующему в кортеже.

Вывод данных. Функция print()

Что такое функция в программировании, узнаем позже. Пока будем считать, что print() – это такая команда языка Python, которая выводит то, что в ее скобках на экран.

>>> print(1032)
1032
>>> print(2.34)
2.34
>>> print("Hello")
Hello

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

>>> print("a:", 1)
a: 1
>>> one = 1
>>> two = 2
>>> three = 3
>>> print(one, two, three)
1 2 3

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

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

>>> print("hello" + " " + "world")
hello world
>>> print(10 - 2.5/2)
8.75

В print() предусмотрены дополнительные параметры. Например, через параметр sep можно указать отличный от пробела разделитель строк:

>>> print("Mon", "Tue", "Wed", "Thu",
... "Fri", "Sat", "Sun", sep="-")
Mon-Tue-Wed-Thu-Fri-Sat-Sun
>>> print(1, 2, 3, sep="//")
1//2//3

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

>>> print(10, end="")
10>>>

Обычно, если end используется, то не в интерактивном режиме, а в скриптах, когда несколько выводов подряд надо разделить не переходом на новую строку, а, скажем, запятыми. Сам переход на новую строку обозначается комбинацией символов . Если присвоить это значение параметру end, то никаких изменений в работе функции print() вы не увидите, так как это значение и так присвоено по-умолчанию:

>>> print(10, end='\n')
10
>>>

Однако, если надо отступить на одну дополнительную строку после вывода, то можно сделать так:

>>> print(10, end='\n\n')
10

>>>

Следующее, что стоит рассказать о функции print() – это использование форматирования строк. На самом деле это никакого отношения к print() не имеет, а применяется к строкам. Но обычно используется именно в сочетании с функцией print().

Форматирование может выполняться в так называемом старом стиле или с помощью строкового метода format. Старый стиль также называют Си-стилем, так как он схож с тем, как происходит вывод на экран в языке C. Рассмотрим пример:

>>> pupil = "Ben"
>>> old = 16
>>> grade = 9.2
>>> print("It's %s, %d. Level: %f" %
... (pupil, old, grade))
It's Ben, 16. Level: 9.200000

Здесь вместо трех комбинаций символов , , подставляются значения переменных pupil, old, grade. Буквы s, d, f обозначают типы данных – строку, целое число, вещественное число. Если бы требовалось подставить три строки, то во всех случаях использовалось бы сочетание %s.

Хотя в качестве значения переменной grade было указано число 9.2, на экран оно вывелось с дополнительными нулями. Однако мы можем указать, сколько требуется знаков после запятой, записав перед буквой f точку с желаемым числом знаков в дробной части:

>>> print("It's %s, %d. Level: %.1f"
...  % (pupil, old, grade))
It's Ben, 16. Level: 9.2

Теперь посмотрим на метод format():

>>> print("This is a {0}. It's {1}."
... .format("ball", "red"))
This is a ball. It's red.
>>> print("This is a {0}. It's {1}."
... .format("cat", "white"))
This is a cat. It's white.
>>> print("This is a {0}. It's {1} {2}."
... .format(1, "a", "number"))
This is a 1. It's a number.

В строке в фигурных скобках указаны номера данных, которые будут сюда подставлены. Далее к строке применяется метод format(). В его скобках указываются сами данные (можно использовать переменные). На нулевое место подставится первый аргумент метода format(), на место с номером 1 – второй и т. д.

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

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

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

Adblock
detector