Функция print уже не раз использовалась в книге, но до сих пор не рассматривался ее полный синтаксис:
sep
Параметр sep контролирует то, какой разделитель будет использоваться между элементами.
По умолчанию используется пробел:
In [8]: print(1, 2, 3) 1 2 3
Можно изменить значение sep на любую другую строку:
In [9]: print(1, 2, 3, sep='|') 1|2|3 In [10]: print(1, 2, 3, sep='\n') 1 2 3 In [11]: print(1, 2, 3, sep=f"\n{'-' * 10}\n") 1 ---------- 2 ---------- 3
В некоторых ситуациях функция print может заменить метод join:
In [16]: vlans = ['10', '20', '30'] In [17]: ','.join(vlans) Out[17]: '10,20,30'
In [12]: items = [1, 2, 3, 4, 5] In [13]: print(*items, sep=', ') 1, 2, 3, 4, 5
end
Параметр end контролирует то, какое значение выведется после вывода всех элементов. По умолчанию используется перевод строки:
In [20]: print(1, 2, 3, end='\n'+'-'*10) 1 2 3 ----------
file
Параметр file контролирует то, куда выводятся значения функции print. По умолчанию все выводится на стандартный поток вывода - sys.stdout.
Python позволяет передавать file как аргумент любой объект с методом write(string). За счет этого с помощью print можно записывать строки в файл:
In [1]: f = open('result.txt', 'w') In [2]: for num in range(10): ...: print(f'Item {num}', file=f) ...: In [3]: f.close() In [4]: cat result.txt Item 0 Item 1 Item 2 Item 3 Item 4 Item 5 Item 6 Item 7 Item 8 Item 9
flush
По умолчанию при записи в файл или выводе на стандартный поток вывода вывод буферизируется. Параметр flush позволяет отключать буферизацию.
Функция range возвращает неизменяемую последовательность чисел в виде объекта range.
Синтаксис функции:
range(stop) range(start, stop[, step])
Параметры функции:
- start - с какого числа начинается последовательность. По умолчанию - 0
- stop - до какого числа продолжается последовательность чисел. Указанное число не включается в диапазон
- step - с каким шагом растут числа. По умолчанию 1
Функция range хранит только информацию о значениях start, stop и step и вычисляет значения по мере необходимости. Это значит, что независимо от размера диапазона, который описывает функция range, она всегда будет занимать фиксированный объем памяти.
Самый простой вариант range - передать только значение stop:
In [1]: range(5) Out[1]: range(0, 5) In [2]: list(range(5)) Out[2]: [0, 1, 2, 3, 4]
Если передаются два аргумента, то первый используется как start, а второй - как stop:
In [3]: list(range(1, 5)) Out[3]: [1, 2, 3, 4]
И чтобы указать шаг последовательности надо передать три аргумента:
С помощью range можно генерировать и убывающие последовательности чисел:
In [6]: list(range(10, 0, -1)) Out[6]: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] In [7]: list(range(5, -1, -1)) Out[7]: [5, 4, 3, 2, 1, 0]
Объект range поддерживает все операции, которые поддерживают последовательности в Python, кроме сложения и умножения.
Проверка, входит ли число в диапазон, который описывает range:
In [11]: nums = range(5) In [12]: nums Out[12]: range(0, 5) In [13]: 3 in nums Out[13]: True In [14]: 7 in nums Out[14]: False
Можно получить конкретный элемент диапазона:
In [15]: nums = range(5) In [16]: nums[0] Out[16]: 0 In [17]: nums[-1] Out[17]: 4
Range поддерживает срезы:
In [18]: nums = range(5) In [19]: nums[1:] Out[19]: range(1, 5) In [20]: nums[:3] Out[20]: range(0, 3)
Можно получить длину диапазона:
In [21]: nums = range(5) In [22]: len(nums) Out[22]: 5
А также минимальный и максимальный элемент:
In [23]: nums = range(5) In [24]: min(nums) Out[24]: 0 In [25]: max(nums) Out[25]: 4
Кроме того, объект range поддерживает метод index:
In [26]: nums = range(1, 7) In [27]: nums.index(3) Out[27]: 2
Функция sorted возвращает новый отсортированный список, который получен из итерируемого объекта, который был передан как аргумент. Функция также поддерживает дополнительные параметры, которые позволяют управлять сортировкой.
Первый аспект, на который важно обратить внимание - sorted всегда возвращает список.
Если сортировать список элементов, то возвращается новый список:
In [1]: list_of_words = ['one', 'two', 'list', '', 'dict'] In [2]: sorted(list_of_words) Out[2]: ['', 'dict', 'list', 'one', 'two']
При сортировке кортежа также возвращается список:
In [3]: tuple_of_words = ('one', 'two', 'list', '', 'dict') In [4]: sorted(tuple_of_words) Out[4]: ['', 'dict', 'list', 'one', 'two']
Сортировка множества:
In [5]: set_of_words = {'one', 'two', 'list', '', 'dict'} In [6]: sorted(set_of_words) Out[6]: ['', 'dict', 'list', 'one', 'two']
Сортировка строки:
In [7]: string_to_sort = 'long string' In [8]: sorted(string_to_sort) Out[8]: [' ', 'g', 'g', 'i', 'l', 'n', 'n', 'o', 'r', 's', 't']
Если передать sorted словарь, функция вернет отсортированный список ключей:
In [9]: dict_for_sort = { ...: 'id': 1, ...: 'name': 'London', ...: 'IT_VLAN': 320, ...: 'User_VLAN': 1010, ...: 'Mngmt_VLAN': 99, ...: 'to_name': None, ...: 'to_id': None, ...: 'port': 'G1/0/11' ...: } In [10]: sorted(dict_for_sort) Out[10]: ['IT_VLAN', 'Mngmt_VLAN', 'User_VLAN', 'id', 'name', 'port', 'to_id', 'to_name']
Флаг reverse позволяет управлять порядко