В первой части мы рассмотрели общий синтаксис языка Python.
В этой – рассмотрим основные типы переменных: (variables
), строки (strings
), списки (lists
), кортежи (tuples
) и словари (dictionaries
).
Переменные – не что иное, как просто зарезервированное в памяти место для хранения каких-то данных. Это значит, что когда вы создаёте переменную – вы резервируете какое-то место в памяти.
В зависимости от типа переменной, интерпретатор выделяет память и определяет, что именно в этом участке памяти хранить. Поэтому, указывая различные типы переменных вы можете хранить в них целые числа (integers), дроби (decimals) или обычные текстовые символы (characters).
Содержание
Присваивание значений переменным
Переменные в Python не нуждаются в обязательном их объявлении для выделения им памяти. Объявление (присваивание, назначение и т.п.) переменной и выделение памяти для хранения её значения выполняется в тот момент, когда вы задаёте какие-то данные (присваиваете значение) этой переменной. Для этого используется символ равенства (=
).
Операнд с левой стороны знака равенства, который в данном случае является оператором, указывает имя переменной, а операнд с правой стороны – значение, которое будет хранится в этой переменной. Например:
>>> counter = 100 # целое число (integer); >>> miles = 1000.0 # числ ос плавающей точкой (floating); >>> name = "John" # строка (string); >>> print counter 100 >>> print miles 1000.0 >>> print name John
Тут 100, 1000.0
и “John
” – это значения, присвоенные переменным counter
, miles
и name
соответственно.
Множественное присваивание
Python позволяет выполнять операцию множественного присваивания, когда одно и тоже значение задаётся сразу нескольким переменным одновременно. Например:
>>> a = b = c = 1
В этом примере создаётся целочисленный объект со значением 1, и все три переменные назначаются к одному и тому же блоку в памяти.
Вы так же можете выполнять множественное присваивание разных значений разным переменным. Например:
>>> a, b, c = 1, 2, "john"
Тут два целочисленных объекта со значениями 1 и 2 присваиваются переменным с именами a
и b
, и одно строковое значение “john
” присваивается переменной c
:
>>> print a, b, c 1 2 john
Стандартные типы данных
Данные, хранимые в памяти мог быть нескольких типов. Например, возраст человека хранится в численном виде, а его(её) адрес – в буквенно-цифровом. У Python-а есть различные стандартные типы, по которым определяются допустимые операции над ними и методы хранения для каждого из них
В Python имеется пять таких стандартных типов:
числа (numbers)
;строки (string)
;списки (list)
;кортежи (tuple)
;словари (dictionary)
.
Числа в Python
Числовые данные (numeric data) содержат цифровые значения.
Числовые объекты создаются когда вы назначаете им данные, например:
>>> var1 = 1 >>> var2 = 10
Вы можете удалить ссылку на такой объект с помощью оператора del
:
del var1[,var2[,var3[....,varN]]]]
Удалять можно как одиночный объект (переменную), так и несколько сразу, например:
>>> var1 = 1 >>> print var1 1 >>> del var1 >>> print var1 Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'var1' is not defined
>>> var1, var2, var3 = 1, 2, 3 >>> print var1, var2, var3 1 2 3 >>> del var1, var2, var3 >>> print var1, var2, var3 Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'var1' is not defined
Python поддерживает четыре различных числовых типа данных:
int
– целые числа (integers);long
– большие целые числа, так же можно использоваться для восьмеричных (octal
) или десятеричных (hexadecimal
) чисел;float
– числа с плавающей точкой;complex
– комплексные числа.
Примеры
Ниже приведены несколько примеров чисел в различных типах:
int | long | float | complex |
---|---|---|---|
10 | 51924361L | 0.0 | 3.14j |
100 | -0x19323L | 15.20 | 45.j |
-786 | 0122L | -21.9 | 9.322e-36j |
080 | 0xDEFABCECBDAECBFBAEl | 32.3+e18 | .876j |
-0490 | 535633629843L | -90. | -.6545+0J |
-0x260 | -052318172735L | -32.54e100 | 3e+26J |
0x69 | -4721885298529L | 70.2-E12 | 4.53e-7j |
- В Python допустимо использовать букву
l
для обозначения типаlong
, но рекомендуется использовать только прописнуюL
, что бы избежать возможной путаницы с цифрой 1. - A complex number consists of an ordered pair of real floating-point numbers denoted by a + bj, where a is the real part and b is the imaginary part of the complex number.
Строки в Python
Строки (strings) в Python представляют из себя набор символов, заключённый в одинарные (' '
) или двойные (" "
) кавычки. Определённые группы из списка могут быть получены с помощью операторов [ ]
или [ : ]
, с указанием индекса, который всегда начинается с 0 и заканчивается индексом -1.
Знак ( +
) является оператором конкатенации (объединения), а символ ( *
) – оператором повторения. Например:
>>> str = 'Hello World!' >>> print str Hello World! # напечатать всю строку; >>> print str[0] # напечатать только первый символ строки; H >>> print str[2:5] llo # напечатать символы с 3-го по 5-ый; >>> print str[2:] llo World! # напечатать символы начиная с 3-го и до конца строки; >>> print str * 2 Hello World!Hello World! # напечатать строку два раза; >>> print str + "TEST" Hello World!TEST # напечатать конкатенирующую (объединенную) строку.
Списки в Python
Списки (lists) являются наиболее универсальными из всех типов данных в Python. Список содержит элементы, разделённые запятыми и ограниченные квадратными скобками ( [ ]
). В некотором роде списки подобны массивам в C. Разница между ними заключается в том, что элементы, принадлежащие одному списку, могут относится к разным типам данных. Значения
Получить доступ к элементам списка можно с использованием операторов [ ]
или [ : ]
с указанием индекса, который начинается 0 и заканчивается -1. Как и в строках – знак ( +
) обозначает конкатенацию элементов, а символ ( *
) – его повторение. Например:
>>> list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] >>> tinylist = [123, 'john'] >>> print list ['abcd', 786, 2.23, 'john', 70.2] # напечатать полный список; >>> print list[0] # вывести первый элемент списка; abcd >>> print list[1:3] [786, 2.23] # вывести элементы, начиная со 2-го и заканчивая 3-им; >>> print list[2:] [2.23, 'john', 70.2] # вывести элементы списка начиная со 2-го и до конца; >>> print tinylist * 2 [123, 'john', 123, 'john'] # вывести все элементы списка два раза; >>> print list + tinylist ['abcd', 786, 2.23, 'john', 70.2, 123, 'john'] # вывести объединённые списки.
Кортежи в Python
Кортежи (tuples)- ещё один тип данных в Python, схожий со списками и содержит в себе элементы, разделённые запятыми. В отличии от списков – элементы в кортеже ограничиваются круглыми скобками ( )
.
Основное различие между списками
(lists) и кортежами
(tuples): списки ограничиваются квадратными скобками ( [ ]
) и их элементы и размер могут изменены, тогда как кортежи ограничиваются круглыми скобками ( ( )
) и не могут быть изменены. Кортежи можно представлять себе как списки, но в read-only “режиме”. Например:
>>> tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 ) >>> tinytuple = (123, 'john') >>> print tuple ('abcd', 786, 2.23, 'john', 70.2) # вывести все элементы кортежа; >>> print tuple[0] abcd # вывести первый элемент кортежа; >>> print tuple[1:3] (786, 2.23) # вывести второй и третий элементы; >>> print tuple[2:] (2.23, 'john', 70.2) # выввести все элементы, начиная с третьего; >>> print tinytuple * 2 (123, 'john', 123, 'john') # вывести все элементы два раза; >>> print tuple[1:3] * 2 (786, 2.23, 786, 2.23) # вывести второй и третий элементы два раза; >>> print tuple + tinytuple ('abcd', 786, 2.23, 'john', 70.2, 123, 'john') # вывести объединённые элементы кортежей;
Следующий пример не сработает с кортежем, так как мы попытаемся изменить данные в нём, но – сработает со списком:
t>>> tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 ) >>> list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] >>> tuple[2] = 1000 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment # сообщение об ошибке - кортеж не поддерживает переназначение элемента; >>> list[2] = 1000 >>> print list[2] 1000 # но это работает с элементом списка.
Словари в Python
Словари (dictionaries) в Python являются своего рода хеш-таблицами. Они так же подобны ассоциативным массивам и хешам в Perl, и содержат пары ключ:значение. Ключ в словаре может содержать любой тип данных, используемый в Python, но, как правило, это цифры или строки. Значения же могут быть любыми случайными элементами.
Словари заключаются в фигурные скобки ( { }
), а доступ к значениями элементов осуществляется с помощью квадратных скобок ( []
). Например:
>>> dict = {} >>> dict['one'] = "This is one" >>> dict[2] = "This is two" >>> tinydict = {'name': 'john','code':6734, 'dept': 'sales'} >>> print dict['one'] This is one # вывести значение ключа one; >>> print dict[2] This is two # вывести значение ключа "2"; >>> print tinydict {'dept': 'sales', 'code': 6734, 'name': 'john'} # отобразить полное содержимое словаря; >>> print tinydict.keys() ['dept', 'code', 'name'] # вывести все ключи словаря; >>> print tinydict.values() ['sales', 6734, 'john'] # вывести все значения в словаре.
В словарях нет общего соглашения о последовательности элементов, но неверно говорить что “элементы не отсортированы” – они попросту не упорядочены (тавтология получается, в оригинале это звучит как “It is incorrect to say that the elements are “out of order”; they are simply unordered“).
Преобразование различных типов данных
Иногда может возникнуть необходимость в преобразовании данных между различными встроенными типами. Для этого – можно просто использовать тип данных как функцию.
В Python есть несколько встроенных функций для выполнения таких преобразований. Эти функции возвращают новый объект, представляющий собой преобразованное значение.
Function | Description |
---|---|
int(x [,base]) | преобразовать х в целое; base указывает тип данных, если х – строка (см. примечание ниже); |
long(x [,base] ) | преобразовать в long integer, base указывает тип данных, если х – строка; |
float(x) | преобразовать х в число с плавающей точкой (floating-point number); |
complex(real [,imag]) | создать комплексное число; |
str(x) | преобразовать объект х в строковый вид; |
repr(x) | преобразовать объект х в выражение; |
eval(str) | Evaluates a string and returns an object. |
tuple(s) | преобразовать s в кортеж; |
list(s) | преобразовать s в список; |
set(s) | преобразовать s в set. |
dict(d) | создать словарь; d должен представлять собой пару ключ:значение; |
frozenset(s) | преобразовать s в frozen set. |
chr(x) | преобразовать целое число в символ; |
unichr(x) | преобразовать целое число в Unicode-символ; |
ord(x) | преобразовать единичный символ в его числовое значение; |
hex(x) | преобразовать целое число в шестнадцатеричное число; |
oct(x) | преобразовать целое число в восьмеричное число. |
Примечание к функции int(x [,base])
:
допустимые типы base (основание системы счисления) – от 0 (десятеричная) до 16;
перевести строку с шестнадцатеричным числом в десятичное цифровое значение – тут base=0
, т.е. десятеричное:
>>> print int("0xdeadbeef", 0) 3735928559
перевести строку с десятеричным числом в десятичное цифровое значение;
>>> print int("101", 0) 101
перевести строку с двоичным числом в десятеричное значение:
>>> print int("1100101",2) 101
перевести строку с шестнадцатеричным значением в десятичное:
>>> print int("65",16) 101