В первой части мы рассмотрели общий синтаксис языка 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
37 054 views