— CSS | MDN
Тип данных <integer>
состоит из одного или нескольких дробных цифр, от 0 до 9 включительно, символы +
и -
необязательны. Не существует единицы измерения, связанной с целочисленным типом данных.
<integer>
. Opera 12.1 поддерживает значения до 215-1, IE — до 220-1, а остальные браузеры даже выше. На протяжении существования значений CSS3 было проведено не большое количество обсуждений об установлении минимального диапазона: последнее решение, в апреле 2012 на протяжении фазы LC, было [-227-1; 227-1], но остальные значения, такие как 224-1 и 230-1, также были предложены. Однако, самая свежая на данный момент спецификация более не указывает на область определения этого типа данных.Во время анимации значения типа <integer>
интерполированы используя особые меры.
Корректные значения целочисленного типа данных
12 Положительное целое число (без предшествующего знака +) +123 Положительное целое число (С предшествующим знаком +) -456 Отрицательное целое число 0 Нуль +0 Нуль, с предшествующим + -0 Нуль, с предшествующим -
Некорректные значения целочисленного типа данных
12.0 Это <number>, а не <integer>, хоть и представляется как целое число. 12. "Дробные" точки запрещены. +---12 Разрешён только один предшествующий символ +/-. десять Буквы запрещены. _5 Специальные знаки запрещены. \35 Экранированные символы Юникода запрещены, даже если они являются целым числом (здесь: 5). \4E94 Разрешены только арабские цифры, даже в случае, если они экранированны (здесь: японское число 5, 五). 3e4 Научные обозначения запрещены.
BCD tables only load in the browser
Pascal. Простые типы данных — Pascal
При описании переменной необходимо указать ее тип. Тип переменной описывает набор значений, которые она может принимать, и действия, которые могут быть над ней выполнены. Описание типа определяет идентификатор, который обозначает тип.
Простые типы делятся на стандартные (порядковые) и перечисляемые (ограниченные).
Стандартные типы
Турбо-Паскаль имеет четыре встроенных стандартных типа: integer (целое), real (вещественное), boolean (логический) и char (символьный).
Целочисленный тип (integer)
В Турбо-Паскале имеется пять встроенных целочисленных типов: shortint (короткое целое), integer (целое), longint (длинное целое), byte (длиной в байт) и word (длиной в слово). Каждый тип обозначает определенное подмножество целых чисел, как это показано в следующей Таблице.
Встроенные целочисленные типы.
Тип |
Диапазон |
Формат |
shortint |
-128 ..+127 |
8 битов со знаком |
integer |
-32768 .. 32767 |
16 битов со знаком |
longint |
-2147483648 +2147483647 |
32 бита со знаком |
byte |
0 . . 255 |
8 битов без знака |
word |
0 .. 65535 |
16 битов без знака |
Арифметические действия над операндами целочисленного типа осуществляются в соответствии со следующими правилами:
- Тип целой константы представляет собой встроенный целочисленный тип с наименьшим диапазоном, включающим значение этой целой константы.
- В случае бинарной операции (операции, использующей два операнда), оба операнда преобразуются к их общему типу перед тем, как над ними совершается действие. Общим типом является встроенный целочисленный тип с наименьшим диапазоном, включающим все возможные значения обоих типов. Например, общим типом для целого и целого длиной в байт является целое, а общим типом для целого и целого длиной в слово является длинное целое. Действие выполняется в соответствии с точностью общего типа и типом результата является общий тип.
- Выражение справа в операторе присваивания вычисляется независимо от размера переменной слева.
Операции совершаемые над целыми числами:
“+” — сложение
“-“ — вычитание
“*” — умножение
SQR — возведение в квадрат
DIV — после деления отбрасывает дробную часть
MOD — получение целого остатка после деления
ABS — модуль числа
RANDOM(X)-получение случайного числа от 0 до Х
Пример:
а:=100; b:=60; a DIV b результат - 1 а MOD b результат - 40
Описываются переменные целого типа следующим образом:
var список переменных: тип;
Например: var а,р,n:integer;
Вещественный тип(real)
К вещественному типу относится подмножество вещественных чисел, которые могут быть представлены в формате с плавающей запятой с фиксированным числом цифр. Запись значения в формате с плавающей запятой обычно включает три значения — m, b и e — таким образом, что m*bе, где b всегда равен 10, а m и e являются целочисленными значениями в диапазоне вещественного типа. Эти значения m и e далее определяют диапазон и точность вещественного типа.
Имеется пять видов вещественных типов: real, singlе, duble, exnende, comp. Вещественные типы различаются диапазоном и точностью связанных с ними значений
Диапазон и десятичные цифры для вещественных типов
Тип |
Диапазон |
Цифры |
Real Single Duble Extende comp |
2.9×10Е-39 до 1.7×10Е 38 1.5×10Е-45 до 3.4×10Е 38 5.0×10Е-324 до 1.7×10Е 308 3. 4×10Е-493 до 1.1×10Е 403-2Е 63 до 2Е 63 |
от 11 до 12 от 7 до 8 от 15 до 16 от 19 до 20 от 19 до 20 |
Операции совершаемые над вещественными числами:
- Все операции допустимые для целых чисел.
- SQRT(x)-корень квадратный из числа х.
- SIN(X), COS(X), ARCTAN(X).
- LN(X)-натуральный логарифм.
- EXP(X)-экспонента Х (ех).
- EXP(X*LN(A))-возведение в степень (Ах).
- Функции преобразования типов:
- TRUNC(X)-отбрасывает дробную часть;
- ROUND(X)-округление.
- Некоторые правила арифметических операций:
- Если в арифметическом действии встречаются числа типа real и integer, то результат будет иметь тип real.
- Все составные части выражения записываются в одну строку.
- Используются только круглые скобки.
- Нельзя подряд ставить два арифметических знака.
Описываются переменные вещественного типа следующим образом:
var список переменных: тип;
Например:
var d,g,k:real;
Символьный тип(char)
K типу char относится любой символ заключенный в апострофы. Для представления апострофа как символьную переменную, надо заключить его в апостроф:’’’’.
Каждый символ имеет свой код и номер. Порядковые номера цифр 0,1..9 упорядочены по возрастанию. Порядковые номера букв также упорядочены по возрастанию, но не обязательно следуют друг за другом.
К символьным данным применимы знаки сравнения:
> , < , >=, <=, <> .
Например: ‘A’ < ‘W’
Функции, которые применимы к символьным переменным:
- ORD(X) — определяет порядковый номер символа Х.
Пример:
ord(‘a’)=97;
- CHR(X) — определяет символ по номеру.
Пример:
chr(97)=’a’;
- PRED(X) — выдает символ, стоящий перед символом Х.
Пример:
pred(‘B’)=’A’;
- SUCC(X) — выдает символ, следующий после символа Х.
Пример:
succ(‘A’)=’B’;
Перечислимый тип
Перечислимый тип данных назван так потому, что задается в виде перечисления констант в строго определенном порядке и в строго определенном количестве. Перечислимый тип состоит из списка констант. Переменные этого типа могут принимать значение любой из этих констант. Описание перечислимого типа имеет вид:
Type <имя типа>=(список констант); Var <имя переменной>:<имя типа>;
где <список констант> — это особый вид констант, задаваемых через запятую и имеющих свой порядковый номер, начиная с 0.
Например:
type направление=(север, юг, запад, восток); месяц=(июнь,июль,август,январь); емкость=(ведро,бочка,канистра,бак); var поворот:направление; отъезд:месяц; объем:емкость;
или так:
var поворот:(свер, юг, запад, восток); отъезд:(июнь, июль, август, январь); объем:(ведро, бочка, канистра, бак);
Можно выполнить такие операторы присваивания:
поворот:=юг; отъезд:=август; объем:=бак;
но нельзя выполнять смешанные присваивания:
отъезд:=юг; объем:=август;
К переменным перечислимого типа применимы следующие функции:
1. ORD — порядковый номер
2. PRED — предшествующий элемент
3. SUCC — последующий элемент.
Пример:
PRED(бочка)=ведро; SUCC(юг)=запад; ORD(июль)=1;
Переменные перечислимого типа можно сравнить, так как они упорядочены и пронумерованы. Так выражения: север < юг, июнь < январь имеют значения TRUE, а юг>запад и бак<бочка значение FАLSE.
Ограниченный тип
Если переменная принимает не все значения своего типа, а только в некотором диапазоне, то ее можно рассматривать как переменную ограниченного типа. Каждый ограниченный тип задается путем накладывания ограничения на базовые типы.
Описывается так:
TYPE <имя типа>=константа1..константа2
При этом должны выполняться следующие правила:
- Обе ограниченные константы должны быть одного типа.
- В качестве базового типа можно использовать любой простой тип, кроме действительного(real).
- Начальные значение при определении ограниченного типа не должно быть больше конечного значения.
Пример:
type index=0..63; letter=’a’..’z’; var char1,char2:letter; a,g:index;
Можно описывать сразу в разделе описания переменных:
var a,g:0..63; char1,char2:’a’..’z’.
Глава 1 Типы данных, условия, ввод и вывод
Тип данных — это класс данных, характеризуемый членами класса и операциями, которые могут быть к ним применены. С помощью типов данных мы можем представлять привычные нам сущности, такие как числа, строки и т.д. В языке R существует 5 базовых типов данных:
Помимо этого есть тип Date
, который позволяет работать с датами. Рассмотрим использование каждого из перечисленных типов.
Числа
Числа — основной тип данных в R. К ним относятся числа c плавающей точкой и целые числа. В терминологии R такие данные называются интервальными, поскольку к ним применимо понятие интервала на числовой прямой. Целые числа относятся к дискретным интервальным, а числа с плавающей точкой — к непрерывным интервальным. 3 ## [1] 8 2 ** 3 ## [1] 8
Результат деления по умолчанию имеет тип с плавающей точкой:
5 / 3
## [1] 1.666667
5 / 2.5
## [1] 2
Если вы хотите чтобы деление производилось целочисленным образом (без дробной части) необходимо использовать оператор %/%
:
Остаток от деления можно получить с помощью оператора %%
:
Вышеприведенные арифметические операции являются бинарными, то есть требуют наличия двух чисел. Числа называются “операндами.” Отделять операнды от оператора пробелом или нет — дело вкуса. Однако рекомендуется все же отделять, так как это повышает читаемость кода. Следующие два выражения эквивалентны. Однако сравните простоту их восприятия:
Как правило, в настоящих программах числа в явном виде встречаются лишь иногда. Вместо этого для их обозначения используют переменные. В вышеприведенных выражениях мы неоднократно использовали число 3. Теперь представьте, что вы хотите проверить, каковы будут результаты, если вместо 3 использовать 4. Вам придется заменить все тройки на четверки. Если их много, то это будет утомительная работа, и вы наверняка что-то пропустите. Конечно, можно использовать поиск с автозаменой, но что если тройки надо заменить не везде? Одно и то же число может выполнять разные функции в разных выражениях. Чтобы избежать подобных проблем, в программе вводят переменные и присваивают им значения. Оператор присваивания значения выглядит как =
Чтобы вывести значение переменной на экран, достаточно просто ввести его:
Мы можем выполнить над переменными все те же операции что и над константами:
a + b
## [1] 8
a - b
## [1] 2
a / b
## [1] 1.666667
a %/% b
## [1] 1
a %% b
## [1] 2
Легко меняем значение второй переменной с 3 на 4 и выполняем код заново.
b = 4
a + b
## [1] 9
a - b
## [1] 1
a / b
## [1] 1.25
a %/% b
## [1] 1
a %% b
## [1] 1
Нам пришлось изменить значение переменной только один раз в момент ее создания, все последующие операции остались неизменны, но их результаты обновились!
Новую переменную можно создать на основе значений существующих переменных:
Посмотрим, что получилось:
Вы можете комбинировать переменные и заданные явным образом константы:
e = d + 2. 5
e
## [1] 11.5
Противоположное по знаку число получается добавлением унарного оператора -
перед константой или переменной:
f = -2
f
## [1] -2
f = -e
f
## [1] -11.5
Операция взятия остатка от деления бывает полезной, например, когда мы хотим выяснить, является число четным или нет. Для этого достаточно взять остаток от деления на 2. Если число является четным, остаток будет равен нулю. В данном случае c равно 4, d
равно 9:
c %% 2
## [1] 0
d %% 2
## [1] 1
Числовые функции
Прежде чем мы перейдем к рассмотрению прочих типов данных и структур данных нам необходимо познакомиться с функциями, поскольку они встречаются буквально на каждом шагу. Понятие функции идентично тому, к чему мы привыкли в математике. Например, функция может называться Z
, и принимать 2 аргумента: x
и y
. В этом случае она записывается как Z(x,y)
. Чтобы получить значение функции, необходимо подставить некоторые значения вместо x
и y
в скобках. Нас даже может не интересовать, как фактически устроена функция внутри, но важно понимать, что именно она должна вычислять. С созданием функций мы познакомимся позднее.
Важнейшие примеры функций — математические. Это функции взятия корня sqrt(x)
, модуля abs(x)
, округления round(x, digits)
, натурального логарифма abs(x)
, тригонометрические функции sin(x)
, cos(x)
, tan(x)
, обратные к ним asin(y)
, acos(y)
, atan(y)
и многие другие. Основные математические функции содержатся в пакете base
, который по умолчанию доступен в среде R и не требует подключения.
В качестве аргумента функции можно использовать переменную, константу, а также выражения:
sqrt(a)
## [1] 2.236068
sin(a)
## [1] -0.9589243
tan(1.5)
## [1] 14.10142
abs(a + b - 2.5)
## [1] 6.5
Вы также можете легко вкладывать функции одна в одну, если результат вычисления одной функции нужно подставить в другую:
Также как и с арифметическими выражениями, результат вычисления функции можно записать в переменную:
b = sin(sqrt(a))
b
## [1] 0. 7867491
Если переменной b ранее было присвоено другое значение, оно перезапишется. Вы также можете записать в переменную результат операции, выполненной над ней же. Например, если вы не уверены, что a
— неотрицательное число, а вам это необходимо в дальнейших расчетах, вы можете применить к нему операцию взятия модуля:
b = sin(a)
b
## [1] -0.9589243
b = abs(b)
b
## [1] 0.9589243
Строки
Строки — также еще один важнейший тип данных. Чтобы создать строковую переменную, необходимо заключить текст строки в кавычки:
s = "В историю трудно войти, но легко вляпаться (М.Жванецкий)"
s
## [1] "В историю трудно войти, но легко вляпаться (М.Жванецкий)"
Строки состоят из символов, и, в отличие от некоторых других языков, в R нет отдельного типа данных для объекта, которых хранит один символ (в C++ для этого используется тип char
). Поэтому при создании строк вы можете пользоваться как одинарными, так и двойными кавычками:
s1 = "Это строка"
s1
## [1] "Это строка"
s2 = 'Это также строка'
s2
## [1] "Это также строка"
Иногда бывает необходимо создать пустую строку (например, чтобы в нее далее что-то добавлять). В этом случае просто напишите два знака кавычек, идущих подряд без пробела между ними:
s1 = "" # это пустая строка
s1
## [1] ""
s2 = '' # это также пустая строка
s2
## [1] ""
s3 = ' ' # а это не пустая, тут есть пробел
s3
## [1] " "
Длину строки в символах можно узнать с помощью функции nchar()
Чтобы извлечь из строки подстроку (часть строки), можно использовать функцию substr()
, указав ей номер первого и последнего символа:
substr(s, 3, 9) # извлекаем все символы с 3-го по 9-й
## [1] "историю"
В частности, зная длину строки, можно легко извлечь последние \(k\) символов:
n = nchar(s)
k = 7
substr(s, n - k, n)
## [1] "анецкий)"
Строки можно складывать так же как и числа. Эта операция называется конкатенацией. В результате конкатенации строки состыковываются друг с другом и получается одна строка. В отличие от чисел, конкатенация производится не оператором +
, а специальной функцией paste()
. Состыковываемые строки нужно перечислить через запятую, их число может быть произвольно
s1 = "В историю трудно войти,"
s2 = "но легко вляпаться"
s3 = "(М.Жванецкий)"
Посмотрим содержимое подстрок:
s1
## [1] "В историю трудно войти,"
s2
## [1] "но легко вляпаться"
s3
## [1] "(М.Жванецкий)"
А теперь объединим их в одну:
s = paste(s1, s2)
s
## [1] "В историю трудно войти, но легко вляпаться"
s = paste(s1, s2, s3)
s
## [1] "В историю трудно войти, но легко вляпаться (М.Жванецкий)"
Настоящая сила конкатенации проявляется когда вам необходимо объединить в одной строке некоторое текстовое описание (заранее известное) и значения переменных, которые у вас вычисляются в программе (заранее неизвестные). Предположим, вы нашли в программе что максимальная численность населения в Детройте пришлась на 1950 год и составила 1850 тыс. человек. Найденный год записан у вас в переменную year
, а население в переменную pop
. Вы их значения пока что не знаете, они вычислены по табличным данным в программе. Как вывести эту информацию на экран “человеческим” образом? Для этого нужно использовать конкатенацию строк.
Условно запишем значения переменных, как будто мы их знаем
s1 = "Максимальная численность населения в Детройте пришлась на"
s2 = "год и составила"
s3 = "тыс. чел"
s = paste(s1, year, s2, pop, s3)
s
## [1] "Максимальная численность населения в Детройте пришлась на 1950 год и составила 1850 тыс. чел"
Обратите внимание на то что мы конкатенировали строки с числами. Конвертация типов осуществилась автоматически. Помимо этого, функция сама вставила пробелы между строками.
Функция
paste()
содержит параметрsep
, отвечающий за символ, который будет вставляться между конкатенируемыми строками. По умолчаниюsep = " "
, то есть, между строками будет вставляться пробел. Подобное поведение желательно не всегда. Например, если после переменной у вас идет запятая, то между ними будет вставлен пробел. В таком случае при вызовеpaste()
необходимо указатьsep = ""
, то есть пустую строку:paste(... sep = "")
. Вы также можете воспользоваться функциейpaste0()
, которая делает [почти] то же самое, что иpaste(..., sep = "")
, но избавляет вас от задания параметраsep
.
Даты и длительности
Для работы с временными данными в R существуют специальные типы. Чаще всего используются даты, указанные с точностью до дня. Такие данные имеют тип Date
, а для их создания используется функция as.Date()
. В данном случае точка — это лишь часть названия функции, а не какой-то особый оператор. В качестве аргумента функции необходимо задать дату, записанную в виде строки. Запишем дату рождения автора (можете заменить ее на свою):
birth = as.Date('1986/02/18')
birth
## [1] "1986-02-18"
Сегодняшнюю дату вы можете узнать с помощью специальной функции Sys. Date()
:
current = Sys.Date()
current
## [1] "2021-02-15"
Даты можно вычитать. Результатом выполнения. Например, узнать продолжительность жизни в днях можно так:
livedays = current - birth
livedays
## Time difference of 12781 days
Вы также можете прибавить к текущей дате некоторое значение. Например, необходимо узнать, какая дата будет через 40 дней:
current + 40
## [1] "2021-03-27"
Имея дату, вы можете легко извлечь из нее день, месяц и год. Существуют специальные функции для этих целей (описанные в главе 8), но прямо сейчас вы можете сделать это сначала преобразовав дату в строку, а затем выбрав из нее подстроку, соответствующую требуемой компоненте даты:
cdate = as.character(current)
substr(cdate, 1, 4) # Год
## [1] "2021"
substr(cdate, 6, 7) # Месяц
## [1] "02"
substr(cdate, 9, 10) # День
## [1] "15"
Более подробно о преобразованиях типов, аналогичных функции as. character()
, используемой в данном примере, рассказано далее в настоящей главе.
Логические
Логические переменные возникают там, где нужно проверить условие. Переменная логического типа может принимать значение TRUE
(истина) или FALSE
(ложь). Для их обозначения также возможны более компактные константы T
и F
соответственно.
Следующие операторы приводят к возникновению логических переменных:
- РАВНО (
==
) — проверка равенства операндов - НЕ РАВНО (
!=
) — проверка неравенства операндов - МЕНЬШЕ (
<
) — первый аргумент меньше второго - МЕНЬШЕ ИЛИ РАВНО (
<=
) — первый аргумент меньше или равен второму - БОЛЬШЕ (
>
) — первый аргумент больше второго - БОЛЬШЕ ИЛИ РАВНО (
>=
) — первый аргумент больше или равен второму
Посмотрим, как они работают:
a = 1
b = 2
a == b
## [1] FALSE
a != b
## [1] TRUE
a > b
## [1] FALSE
a < b
## [1] TRUE
Если необходимо проверить несколько условий одновременно, их можно комбинировать с помощью логических операторов. Наиболее популярные среди них:
- И (
&&
) — проверка истинности обоих условий - ИЛИ (
||
) — проверка истинности хотя бы одного из условий - НЕ (
!
) — отрицание операнда (истина меняется на ложь, ложь на истину)
c = 3
(b > a) && (c > b)
## [1] TRUE
(a > b) && (c > b)
## [1] FALSE
(a > b) || (c > b)
## [1] TRUE
!(a > b)
## [1] TRUE
Более подробно работу с логическими переменными мы разберем далее при знакомстве с условным оператором if
.
Информатик БУ — Типы данных Pascal
Pascal – язык со строгой типизацией переменных. Это значит, что мы обязательно должны указывать тип каждой переменной, и не можем присвоить переменной одного типа значение другого типа (если только они не эквивалентны).
В качестве примера возьмем часть программы, которая вычисляет площадь круга по заданному радиусу:
S := r*r*3. 14;
Если мы укажем, что у переменной S целочисленный тип, программа будет работать не верно, так как результатом выражения r*r*3.14 будет дробь, и присвоить целочисленной переменной дробное значение мы не можем.
Еще один пример. Программа складывает значение двух переменных:
a := 5;
b := 4;
c := a+b;
Если мы укажем, что a, b и c являются числами, то вполне логично предположить, что после выполнения программы значение c станет равно 9-ти. Но что будет, если a и b являются не числами, а простыми символами, а c – строкой?
a := ‘5’;
b := ‘4’;
c := a+b;
В этом случае мы не можем сложить математически два значения (ну правда, мы же не можем математически сложить две буквы), и символы просто подставятся друг к другу, то есть значение c будет равно ‘54’.
Кроме этого, после запуска программы для каждой переменной в оперативной памяти выделяется некоторое количество байт, которое зависит от типа этой переменной. И значения, которые может принять переменная, ограничены этим количеством байт. К примеру, переменной с типом данных byte выделяется 1 байт памяти, и она может принимать значения от 0 до 255, всего 256, что является количеством вариантов, которые можно закодировать одним байтом. Если же мы укажем для переменной тип byte, но присвоим ей значение, к примеру, 1000, программа работать не будет.
Целочисленные типы
Переменная целочисленного типа может принимать любое целое значение из диапазона значений этого типа. Также является порядковым типом.
Тип | Длина (байт) | Диапазон |
byte | 1 | 0..255 |
shortint | 1 | -128..127 |
integer | 2 | -32768. .32767 |
word | 2 | 0..65536 |
longint | 4 | -2147483648..2147483647 |
В заданиях ЕГЭ, как правило, достаточно использовать тип данных integer.
Вещественные типы
К вещественному типу относят дробные числа и числа с плавающей запятой. Тем не менее, мы можем присвоить вещественному типу целое значение.
Тип | Длина (байт) | Диапазон |
single | 4 | 1.5*10-45 — 3.4*1038 |
real | 6 | 2.9*10-39 — 1.7*1038 |
double | 8 | 5*10-324 — 1. 7*10308 |
extended | 10 | 3.4*10-4932 — 1.1*104932 |
В заданиях ЕГЭ, как правило, достаточно использовать тип данных real.
Символьный тип
Любой одиночный символ.
Тип | Длина (байт) | Диапазон |
char | 1 | Любой символ кодировки ASCII |
Переменной типа char можно присвоить любую букву, цифру, или любой другой символ стандартной кодировки. Также является порядковым типом.
Строковый тип
Если char — это только один символ, то строка — это набор символов. Строкой может быть, к примеру, слово, состоящее из нескольких букв. Также строки относят к структурным типам.
Тип | Длина (байт) | Диапазон |
string | 256 | 255 символов кодировки ASCII |
Логический тип
Переменная логического типа может принимать только два значения: true или false (истина или ложь). Является порядковым типом.
Тип | Длина (байт) | Диапазон |
boolean | 1 | true, false |
Интервальный тип данных
Интервальный тип указывает, что переменная может принимать значения от одного значения, до другого. К примеру, мы знаем, что переменная может принимать значения только от 5 до 25. Мы можем объявить её тип так:
var
a: 5..25;
ТИПЫ ДАННЫХ И ПЕРЕМЕННЫЕ
ABL, как и большинство других языков программирования, является строго-типизированным. Это означает, что всем данным, используемым в программе (переменные, поля таблиц), определяется их тип.
ТИПЫ ДАННЫХ
Тип данных определяет допустимые значения данных, а также совокупность операций над ними. В OpenEdge существуют следующие основные типы данных:
Тип данных | Описание | Диапазон допустимых значений |
CHARACTER | Текстовый | Ограничен размером записи 32 килобайт |
LONGCHAR | Текстовый | Ограничен ресурсами системы |
DECIMAL | Вещественный | 40 знаков до «. » и 10 знаков после. |
INTEGER | Целочисленный | -216… 216 |
INT64 | Целочисленный | -232… 232 |
LOGICAL | Логический | True/False или Yes/No |
DATE | Дата | 01/01/32768 до н.э. – 31/12/32767н.э. |
DATETIME | Дата-время | Дата: 01/01/32768 до н.э. – 31/12/32767н.э. Время: 00:00:00.000 — 23.59.59.999 |
DATETIME-TZ | Дата-время-зона | Дата: 01/01/32768 до н.э. – 31/12/32767н.э. Время: 00:00:00.000 — 23.59.59.999 Зона: -14:00 – +14:00 |
ПЕРЕМЕННЫЕ
Переменные представляют собой именованную область памяти для хранения информации. Для каждой переменной должен быть определен тип данных хранимых в ней. Обращение к переменной осуществляется по ее идентификатору (имени), указываемому при ее объявлении.
DEFINE {[[NEW [GLOBAL]] SHARED] |
[PRIVATE | PROTECTED | PUBLIC] [STATIC]}
VARIABLE variable-name {AS var-datatype
| LIKE field
| LIKE variable}
[INITIAL
{constant | {[ constant [, constant ] … ]}}]
[LABEL string]
[FORMAT string]
[DECIMALS n]
[EXTENT constant]
[NO-UNDO]
[[NOT] CASE-SENSITIVE]
variable-name — идентификатор (имя) переменной;
var-datatype — тип данных переменной;
Идентификаторы представляют собой последовательность, которая может состоять из букв латинского алфавита, цифр и спецсимволов (@,#,$,%,*,-,_). Начинаться идентификатор должен строго с буквы. Максимально допустимая длина идентификатора составляет 32 символа.
INITIAL constant — определяет начальное значение переменной равное constant.
FORMAT string — определяет формат представления значения переменной.
LABEL string — определяет метку переменной.
Переменная может быть описана, подобием поля таблицы с помощью оператора LIKE field, или другой переменной LIKE variable. Объявляемая таким образом переменная принимает все атрибуты того поля или переменной, подобием которой она объявляется.
Если при объявлении переменной не были указаны ее формат и начальное значение, то они принимают значения по умолчанию согласно таблице, а значение LABEL принимается равным идентификатору переменной.
Тип | Формат | Начальное значение по умолчанию |
CHARACTER | «x(8)» | «» |
LONGCHAR | «» | |
DECIMAL | ->>,>>9. 99 | 0 |
INTEGER | ->,>>>,>>9 | 0 |
INT64 | ->,>>>,>>9 | 0 |
LOGICAL | YES/NO | NO |
DATE | 99/99/99 | ? (неизвестное значение) |
DATETIME | 99/99/9999 HH:MM:SS.SSS | ? (неизвестное значение) |
DATETIME-TZ | 99/99/9999 HH:MM:SS.SSS+HH:MM | ? (неизвестное значение) |
EXTENT constant — определяет переменную, как одномерный массив размера constant. Стоит заметить, что в ABL возможно объявление исключительно только одномерных массивов.
Начальные значения элементов массива могут быть заданы с помощью опции INITIAL, в которой указывается список значений элементов массива с разделителем запятая. Порядковый номер каждого значения в списке соответствует порядковому номеру элемента массива, которому оно присваивается. Следовательно, количество элементов в списке не может превышать размер массива.
Обращение к элементам массива осуществляется по имени переменной и порядковому номеру, указываемому в квадратных скобках:
variable-name[i]
DEF VAR vWeek AS CHAR
EXTENT 7
INITIAL ["Пн","Вт","Ср","Чт","Пт","Сб","Вс"]
NO-UNDO.DISPLAY vWeek[3].
Нумерация элементов массива, в отличии от некоторых других языков программирования, начинается с единицы, а не с нуля.
Аналогичным образом осуществляется присвоение и изменение значений элементов массива:
DEF VAR vWeek AS CHAR EXTENT 7.
vWeek[1] = "Пн".
vWeek[2] = "Вт".
...
ПЕРЕМЕННЫЕ CHARACTER И LONGCHAR ТИПА
Присваиваемое текстовое значение переменной CHARACTER или LONGCHAR типа должно быть указано либо в одинарных, либо в двойных кавычках.
DEF VAR cMonth AS CHAR NO-UNDO.
DEF VAR cWeekDay AS CHAR NO-UNDO.
cMonth = "Январь".
cWeekDay = 'Понедельник'.
По умолчанию, значения текстовых переменных являются регистронезависимыми. При операциях сравнения, значение переменной сначала переводится в верхний регистр и только после этого выполняется сравнение. Объявление переменной с атрибутом CASE-SENSITIVE делает ее значение регистрозависимым.
Описание текстового формата «X(8)» означает: X – любой печатаемый символ, в скобках указано количество таких символов, определяющее максимальную отображаемую длину значения переменной. Длина значения текстовой переменной может быть больше чем 8 символов, но на экране будут отображаться только ее первые 8 символов. Таким образом «X(8)» равнозначно «XXXXXXXX».
DEF VAR cName AS CHAR FORMAT "X(3)" NO-UNDO.
DEF VAR cName AS CHAR FORMAT "XXX" NO-UNDO.
Символ вводимый на месте знака ! в текстовом формате будут автоматически переводится в верхний регистр.
DEF VAR cName AS CHAR FORMAT "!XXX!XXXX!XXX" NO-UNDO.
cName = "мир труд май".
DISPLAY cName.
Результат: Мир Труд Май
По умолчанию, значение текстовой переменной не может содержать в себе спец символы двойные и одинарные кавычки («,’). Если же все таки использование таких символов необходимо, то перед ними следует использовать ESCAPE-символ ~.
DEF VAR cName AS CHAR FORMAT NO-UNDO.
cName = "ОАО ~"Заря~"".
DISPLAY cName FORMAT "x(10)".
или использовать различные типы кавычек:
DEF VAR cName AS CHAR FORMAT NO-UNDO.
cName = 'ОАО "Заря" '.
DISPLAY cName FORMAT "x(10)".
ПЕРЕМЕННЫЕ DECIMAL, INTEGER И INT64 ТИПОВ
Числовое значение в OpenEdge может быть представлено в европейском или американском форматах. Данное представление определяется стартовым параметром -E для европейского представления числа, а в случае отсутствия указания данного параметра американским форматом.
Американский формат представления числа: 1,234,567.89
Европейский формат представления числа: 1.234.567,89
Данное представление может быть изменено в рамках сессии с помощью атрибута сессии NUMERIC-FORMAT.
DEF VAR vNum AS DECIMAL INIT 12345.67.
SESSION:NUMERIC-FORMAT = "AMERICAN".
DISPLAY vNum.
Результат: 12,345.67
DEF VAR vNum AS DECIMAL INIT 12345.67.
SESSION:NUMERIC-FORMAT = "EUROPEAN".
DISPLAY vNum.
Результат: 12.345,67
Аналогично представление для целочисленных значений:
DEF VAR vNum AS INTEGER INIT 12345.
SESSION:NUMERIC-FORMAT = "AMERICAN".
DISPLAY vNum.
Результат: 12,345
DEF VAR vNum AS INTEGER INIT 12345.
SESSION:NUMERIC-FORMAT = "EUROPEAN".
DISPLAY vNum.
Результат: 12. 345
Указать количество знаков после запятой переменной DECIMAL типа можно не только с помощью соответствующего формата, но и с помощью атрибута DECIMALS n, где n – количество знаков.
DEF VAR dMoney AS DEC FORMAT ">>9.999" NO-UNDO.
DEF VAR dMoney AS DEC DECIMALS 3 NO-UNDO.
Разделитель дробной и целой части в указании формата всегда — точка, независимо от европейского или американского представления числа.
С помощью указания формата возможно отключение разбиение на разряды существующее по умолчанию:
DEF VAR iCount AS INTEGER NO-UNDO.
iCount = 12000001.
DISPL iCount.
Результат: 12,000,001
DEF VAR iCount AS INTEGER FORMAT "99999999" NO-UNDO.
iCount = 12000001.
DISPL iCount.
Результат: 12000001
В случае если переменной INTEGER типа присваивается дробное значение, результатом будет являться округленное до целого присваиваемое значение.
DEF VAR i AS INTEGER NO-UNDO.
i = 34.6.
DISPLAY i.
Результат: 35
ПЕРЕМЕННЫЕ DATE, DATETIME И DATETIME-TZ ТИПОВ
Формат представления дат в OpenEdge определяется форматом указываемом в стартовом параметре -d. Формат даты определенный параметром -d влияет исключительно на отображение дат, запись даты в базу данных, или в память при присвоении переменной, независимо от этого, всегда будет осуществляться в формате mm/dd/yy.
В рамках сессии формат представления последовательности следования день/месяц/год в датах может быть изменен с помощью атрибута сессии DATE-FORMAT.
Для установки последовательности для текущей сессии год,месяц,день:
SESSION:DATE-FORMAT = "YMD".
С помощью атрибута переменной FORMAT можно задавать разделитель и число символов в представлении года.
DEF VAR dBeg-date AS DATE FORMAT "99-99-99".
DEF VAR dEnd-date AS DATE FORMAT "99-99-9999".
Представление года четырехзначным значением определяется параметром -yy. В данном параметре указывается начальное четырехзначное значение года от которого осуществляется отсчет столетнего периода в рамках которого осуществляется определение четырехзначного значения года соответствующего указанному двузначному значению.
В рамках сессии начальное значение года может быть изменено с помощью атрибута сессии YEAR-OFFSET
DEF VAR vDate AS DATE FORMAT "99/99/9999" NO-UNDO.
SESSION:YEAR-OFFSET = 1950.
vDate = 08/21/67.
DISPL vDate.
Результат: 21/08/1967
DEF VAR vDate AS DATE FORMAT "99/99/9999" NO-UNDO.
SESSION:YEAR-OFFSET = 1950.
vDate = 08/21/12.
DISPL vDate.
Результат: 21/08/2012
В ABL существует два типа данных дата-время: DATETIME и DATETIME-TZ. Формат дата-время DATETIME состоит из двух частей — это дата и время. DATETIME-TZ в сравнении с DATETIME содержит еще смещение времени временной зоны.
DEF VAR vDateTime AS DATETIME NO-UNDO.
vDateTime = NOW.
DISPL vDateTime.
Результат: 05/07/2013 16:05:24.315
DEF VAR vDateTime AS DATETIME-TZ NO-UNDO.
vDateTime = NOW.
DISPL vDateTime.
Результат: 05/07/2013 16:05:24.315+04:00
Возможны следующие форматы представления части содержащей время:
«HH»
«HH:MM»
«HH:MM:SS»
«HH:MM:SS.SSS»
«HH:MM:SS.SSS AM»
«HH:MM:SS.SSS+HH:MM»
«HH:MM:SS.SSS AM+HH:MM»
При наличии в формате времени «A» или «a» время будет выводиться в формате 12 часов, в противном случае в формате 24 часа.
ПЕРЕМЕННЫЕ LOGICAL ТИПА
Переменные LOGICAL типа могут принимать три значения: TRUE (ИСТИНА), FALSE(ЛОЖЬ) и неизвестное значение — ?.
С помощь формата LOGICAL переменной можно трансформировать представление (отображение) значений TRUE/FALSE в иные схожие значения, например определяющие пол M/F (М/Ж).
DEF VAR vLog AS LOGICAL FORMAT "M/F" NO-UNDO.
vLog = TRUE.
DISPL vLog.
Результат: M
Формат переменной LOGICAL представляет собой два значения, разделенных символом «/». Первое значение в формате соответствует значению TRUE, второе — значению FALSE.
Неизвестное значение применяется для указания пустого значения. Если в базе данных у ряда записей поле дата (например, с именем fDate) просто отсутствует (не заполнено) и мы хотим отобрать такие записи, то сравнение fDate = «» вызовет ошибку несовместимости типов, так как таким образом мы как бы сравниваем тип DATE с типом CHARACTER. Поэтому, для указания пустого значения применяется неизвестное значение ?, являющееся аналогом значения null в других языках программирования. Выражение fDate = ? уже не будет вызывать подобной ошибки.
Помимо стандартных форматов, переменной любого типа может быть задан формат созданный самим разработчиком:
DEF VAR cMoney AS DEC FORMAT "$ >>>9.99 USD" NO-UNDO.
cMoney = 123.78.
DISPL cMoney.
Результат $ 123.78 USD
Если при выполнении какого-либо программного блока, в котором некой переменной присваивалось новое значение, произойдет прерывание, вызванное либо сбоем, либо действиями пользователя, то по умолчанию произойдет откат значения данной переменной на предыдущее, т.е. новое присвоение значения не произойдет. За данное действие отвечает параметр UNDO. Согласно ProgressCodingStandardsManual автор Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.» Schreiber Fast 4gl systems, inc., все переменные должны быть объявлены как NO-UNDO (отменяющему откат значения переменной в случае прерывания). Согласно той же статье при выборе идентификатора переменной следует пользоваться префиксами и суффиксами для отличия идентификаторов переменных от идентификаторов полей баз данных. При объявлении переменной как подобие поля базы данных (LIKE), в идентификаторе переменной должно звучать наименование поля подобием которого является данная переменная.
Типы данных языка запросов SQLite
Тип данных SQLite — это атрибут, определяющий тип данных любого объекта. Каждый столбец, переменная и выражение имеет связанный тип данных в SQLite.
Вы будете использовать эти типы данных при создании своих таблиц. SQLite использует более общую систему динамического типа. В SQLite тип данных значения связан с самим значением, а не с его контейнером.
Классы хранения SQLite
Каждое значение, хранящееся в базе данных SQLite, имеет один из следующих классов хранения
Название | Описание |
NULL | Значение — значение NULL. |
INTEGER | Значение представляет собой целое число со знаком, сохраненное в 1, 2, 3, 4, 6 или 8 байтах в зависимости от величины значения. |
REAL | Значение представляет собой значение с плавающей запятой, которое хранится как 8-байтовое число с плавающей точкой IEEE. |
TEXT | Значение представляет собой текстовую строку, хранящуюся с использованием кодировки базы данных (UTF-8, UTF-16BE или UTF-16LE) |
BLOB | Значение представляет собой блок данных, который хранится точно так же, как он был введен. |
Тип слияния SQLite
SQLite поддерживает концепцию affinity (близость) типа к столбцам. Любой столбец может хранить данные любого типа, но предпочтительный класс хранения для столбца называется affinity. Каждому столбцу таблицы в базе данных SQLite3 присваивается одно из следующих аффинностей типа:
Название | Описание |
TEXT | В этом столбце хранятся все данные с использованием классов хранения NULL, TEXT или BLOB. |
NUMERIC | Этот столбец может содержать значения, используя все пять классов хранения. |
INTEGER | Работает так же, как столбец с NUMERIC сродством, с исключением в выражении CAST. |
REAL | Ведет себя как столбец с NUMERIC сродством, за исключением того, что он приводит целые значения в представление с плавающей запятой. |
NONE | Столбец с аффинностью NONE не предпочитает один класс хранения над другим, и не предпринимаются попытки принудить данные из одного класса хранения к другому. |
Идентификация и имена типов SQLite
В следующих списках таблиц перечислены имена типов данных, которые можно использовать при создании таблиц SQLite3 с соответствующим применимым сродством.
Тип | Близость |
|
INTEGER |
|
TEXT |
|
NONE |
|
REAL |
|
NUMERIC |
Boolean Тип данных
SQLite не имеет отдельного булевского класса хранения. Вместо этого булевые значения сохраняются как целые числа 0 (ложь) и 1 (истина).
Тип данных даты и времени
SQLite не имеет отдельного класса хранения для хранения дат и / или времени, но SQLite способен хранить даты и время как значения TEXT, REAL или INTEGER.
Название | Описание |
TEXT | Дата в формате «YYYY-MM-DD HH:MM:SS.SSS» |
REAL | Число дней с полудня в Гринвиче 24 ноября 4714 г. до н.э. |
INTEGER | Количество секунд с 1970-01-01 00:00:00 UTC |
PHP | Типы данных
Типы данных
Последнее обновление: 28.02.2021
PHP является языком с динамической типизацией. Это значит, что тип данных переменной выводится во время выполнения, и в отличии от ряда других языков программирования в PHP не надо указывать перед переменной тип данных.
В PHP есть десять базовых типов данных:
bool (логический тип)
int (целые числа)
float (дробные числа)
string (строки)
array (массивы)
object (объекты)
callable (функции)
mixed (любой тип)
resource (ресурсы)
null (отсутствие значения)
Из этих типов данных первые четыре являются скалярными: bool, int, float, string
. Поэтому вначале именно их и рассмотрим.
int (целочисленный тип)
Представляет целое число со знаком.
$num = -100; echo $num;
Здесь переменная $num
представляет целочисленный тип, так как ей присваивается целочисленное значение.
Кроме десятичных целых чисел PHP обладает возможностью использовать также двоичные, восьмеричные и шестнадцатеричные числа. Шаблоны чисел для других систем:
шестнадцатеричные : 0[xX][0-9a-fA-F]
восьмеричные : 0[0-7]
двоичные : 0b[01]
Например:
<?php // Все числа в десятичной системе имеют значение 28 $num_10 = 28; // десятичное число $num_2 = 0b11100; // двоичное число (28 в десятичной системе) $num_8 = 034; // восьмеричное число (28 в десятичной) $num_16 = 0x1C; // шестнадцатиричное число (28 в десятичной) echo "num_10 = $num_10 <br>"; echo "num_2 = $num_2 <br>"; echo "num_8 = $num_8 <br>"; echo "num_16 = $num_16"; ?>
Переменная типа int
занимает в памяти 32 бита, то есть может принимаь значения от -2 147 483 648 до 2 147 483 647.4
$a3 = 6E-8; // 0.00000006
?>
Тип bool (логический тип)
Переменные логического типа могут принимать два значения: true
и false
или иначе говоря истина
и ложь
.
Чаще всего логические значения используются в условных конструкциях:
<?php $foo = true; $boo = false; ?>
Тип string (строки)
Для работы с текстом можно применять строки. Строки бывают двух типов: в двойных кавычках и одинарных. От типа кавычек зависит обработка строк интерпретатором. Так, переменные в двойных кавычках заменяются значениями, а переменные в одинарных кавычках остаются неизменными.
<?php $a=10; $b=5; $result = "$a+$b <br>"; echo $result; $result = '$a+$b'; echo $result; ?>
В этом случае мы получим следующий вывод:
10+5 $a+$b
Кроме обычных символов, строка может содержать специальные символы, которые могут быть неправильно интерпретированы. Например, нам надо добавить в строку кавычку:
$text = "Модель "Apple II"";
Данная запись будет ошибочна. Чтобы исправить ошибку, мы можем сочетать различные типы кавычек (‘Модель «Apple II»‘ или «Модель ‘Apple III'») или использовать слеш, чтобы ввести кавычку в строку:
$text = "Модель \"Apple II\"";
Специальное значение null
Значение null
указывает, переменная не имеет значения. Использование данного значения полезно в тех случаях, когда мы
хотим указать, что переменная не имеет значения. Например, если мы просто определим переменную без ее инициализации, и затем попробуем ее использовать,
то нам интерпретатор выдаст сообщение, что переменная не установлена:
<?php $a; echo $a; ?>
Использование значения null поможет избежать данной ситуации. Кроме того, мы сможем проверять наличие значения и в зависимости от результатов проверки производить те или иные действия:
<?php $a = null; echo "a = $a"; ?>
Константа null не чувствительна к регистру, поэтому мы можем написать и так:
$a = NULL;
Динамическая типизация
Поскольку PHP — язык с динамической типизацией, то мы можем присваивать одной и той же переменной значения разных типов:
<?php $id = 123; echo "<p>id = $id</p>"; $id = "jhveruuyeru"; echo "<p>id = $id</p>"; ?>
Целочисленный тип данных — основы программирования
Кеннет Лерой Басби и Дэйв Брауншвейг
Обзор
Целочисленный тип данных представляет некоторый диапазон математических целых чисел. Интегральные типы данных могут иметь разные размеры и могут содержать или не содержать отрицательные значения. Целые числа обычно представлены в компьютере как группа двоичных цифр (битов). Размер группировки варьируется, поэтому набор доступных целочисленных размеров варьируется для разных типов компьютеров и разных языков программирования.
Обсуждение
Целочисленный тип данных в основном представляет собой целые числа (без дробных частей). Целочисленные значения переходят от одного значения к другому. Между 6 и 7 нет ничего. Может возникнуть вопрос, почему бы не сделать все ваши числа с плавающей запятой, которые допускают дробные части. Причина тройная. Во-первых, некоторые вещи в реальном мире не являются дробными. Собака, даже с тремя ногами, все равно остается одной (1) собакой, а не четвертью собаки. Во-вторых, целочисленный тип данных часто используется для управления потоком программы путем подсчета, поэтому требуется тип данных, который перескакивает от одного значения к другому.В-третьих, обработка целых чисел внутри ЦП выполняется значительно быстрее, чем обработка чисел с плавающей запятой.
Целочисленный тип данных имеет аналогичные атрибуты и действует или ведет себя одинаково на всех поддерживающих его языках программирования.
Язык | Зарезервированное слово | Размер | Диапазон |
---|---|---|---|
С ++ | короткий | 16 бит / 2 байта | -32 768 до 32 767 |
С ++ | внутренний | варьируется | зависит от компилятора |
С ++ | длинный | 32 бита / 4 байта | -2 147 483 648 до 2 147 483 647 |
С ++ | длинный длинный | 64 бит / 8 байт | -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 |
С # | короткий | 16 бит / 2 байта | -32 768 до 32 767 |
С # | внутренний | 32 бита / 4 байта | -2 147 483 648 до 2 147 483 647 |
С # | длинный | 64 бит / 8 байт | -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 |
Java | короткий | 16 бит / 2 байта | -32 768 до 32 767 |
Java | внутренний | 32 бита / 4 байта | -2 147 483 648 до 2 147 483 647 |
Java | длинный | 64 бит / 8 байт | −9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
JavaScript | НЕТ | ||
Python | внутр () | без ограничений | |
Swift | Внутр. | варьируется | зависит от платформы |
Swift | Int32 | 32 бита / 4 байта | -2 147 483 648 до 2 147 483 647 |
Swift | Внутр. 64 | 64 бит / 8 байт | −9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
Для C ++ и Swift размер целого числа по умолчанию зависит от используемого компилятора и компьютера.Этот эффект известен как машинно-зависимый . Эти вариации целочисленного типа данных раздражают начинающего программиста. Для начинающего программиста более важно понимать общие атрибуты целочисленного типа данных, применимые к большинству языков программирования.
JavaScript не поддерживает целочисленный тип данных, но функцию Math.round ()
можно использовать для возврата значения числа, округленного до ближайшего целого числа.
Целые числа Python 3 не ограничены по размеру, однако sys.maxsize
может использоваться для определения максимального практического размера списка или строкового индекса.
Ключевые термины
- машинно-зависимый
- Атрибут языка программирования, который изменяется в зависимости от процессора компьютера.
Список литературы
примитивных типов данных (Руководства по Java ™> Изучение языка Java> Основы языка)
Язык программирования Java является статически типизированным, что означает, что все переменные должны быть сначала объявлены, прежде чем их можно будет использовать.Это включает в себя указание типа и имени переменной, как вы уже видели:
Это сообщает вашей программе, что поле с именем «шестерня» существует, содержит числовые данные и имеет начальное значение «1». Тип данных переменной определяет значения, которые она может содержать, а также операции, которые могут выполняться с ней. Помимо int
, язык программирования Java поддерживает семь других примитивных типов данных . Примитивный тип предопределен языком и назван зарезервированным ключевым словом.Примитивные значения не разделяют состояние с другими примитивными значениями. Язык программирования Java поддерживает следующие восемь примитивных типов данных:
байт :
байт Тип данных
является 8-битовым целым числом с дополнением до двух со знаком. Он имеет минимальное значение -128 и максимальное значение 127 (включительно). Тип данныхbyte
может быть полезен для экономии памяти в больших объемах. массивы, где действительно важна экономия памяти. Их также можно использовать вместоint
, где их пределы помогают прояснить ваш код; тот факт, что диапазон переменной ограничен, может служить формой документации.short : Тип данных
short
представляет собой 16-битовое целое число со знаком в дополнительном коде. Он имеет минимальное значение -32 768 и максимальное значение 32 767 (включительно). Как и в случае с байтомint : по умолчанию тип данных
int
представляет собой 32-битное знаковое целое число с дополнением до двух, которое имеет минимальное значение -2 31 и максимальное значение 2 31 -1.В Java SE 8 и более поздних версиях вы можете использовать тип данныхint
для представления 32-битного целого числа без знака, которое имеет минимальное значение 0 и максимальное значение 2 32 -1. Используйте класс Integer, чтобы использовать тип данныхint
как целое число без знака. См. Раздел «Числовые классы» для получения дополнительной информации. Статические методы, такие какcompareUnsigned
,diverUnsigned
и т. Д., Были добавлены вInteger
Класс для поддержки арифметических операций с целыми числами без знака.long : Тип данных
long
— это 64-битное целое число с дополнением до двух. Длинное число со знаком имеет минимальное значение -2 63 и максимальное значение 2 63 -1. В Java SE 8 и более поздних версиях вы можете использовать тип данныхlong
для представления беззнакового 64-битного типа long, который имеет минимальное значение 0 и максимальное значение 2 64 -1. Используйте этот тип данных, если вам нужен более широкий диапазон значений, чем те, которые предоставляетint
.ВLong Класс
также содержит такие методы, какcompareUnsigned
,diverUnsigned
и т. Д. Для поддержки арифметических операций для unsigned long.float : Тип данных
float
представляет собой 32-битное число с плавающей запятой одинарной точности IEEE 754. Диапазон его значений выходит за рамки данного обсуждения, но указан в Раздел «Типы, форматы и значения с плавающей запятой» Спецификации языка Java. Как и в случае с рекомендациями длябайт
икороткого
, используйтес плавающей запятой
(вместоdouble
), если вам нужно сохранить память в больших массивах чисел с плавающей запятой.Этот тип данных никогда не следует использовать для точных значений, таких как валюта. Для этого вам нужно будет использовать java.math.BigDecimal вместо этого. Numbers and Strings охватываетBigDecimal
и другие полезные классы, предоставляемые платформой Java.double : тип данных
double
представляет собой 64-битную плавающую точку IEEE 754 с двойной точностью. Диапазон его значений выходит за рамки данного обсуждения, но указан в Раздел «Типы, форматы и значения с плавающей запятой» Спецификации языка Java.Для десятичных значений этот тип данных обычно выбирается по умолчанию. Как упоминалось выше, этот тип данных никогда не следует использовать для точных значений, таких как валюта.boolean : Тип данных
boolean
имеет только два возможных значения:true
иfalse
. Используйте этот тип данных для простых флагов, которые отслеживают истинные / ложные условия. Этот тип данных представляет один бит информации, но его «размер» не совсем точно определен.char : Тип данных
char
— это один 16-битный символ Unicode. Он имеет минимальное значение'\ u0000'
(или 0) и максимальное значение'\ uffff'
(или 65 535 включительно).
В дополнение к восьми примитивным типам данных, перечисленным выше, язык программирования Java также обеспечивает специальную поддержку символьных строк через
java.lang.String класс. Заключение строки символов в двойные кавычки автоматически создаст новый объект String
; например, String s = "это строка";
. String
Объекты неизменяемые , что означает, что после создания их значения не могут быть изменены. Класс String
технически не является примитивным типом данных, но, учитывая особую поддержку, предоставляемую ему языком, вы, вероятно, будете думать о нем как о таковом. Вы узнаете больше о классе String
в
Простые объекты данных
Значения по умолчанию
Не всегда необходимо присваивать значение при объявлении поля. Поля, которые объявлены, но не инициализированы, будут установлены компилятором в разумные значения по умолчанию.Вообще говоря, это значение по умолчанию будет равно нулю или null
, в зависимости от типа данных. Однако использование таких значений по умолчанию обычно считается плохим стилем программирования.
В следующей таблице приведены значения по умолчанию для указанных выше типов данных.
Тип данных | Значение по умолчанию (для полей) |
---|---|
байт | 0 |
короткий | 0 |
внутренний | 0 |
длинный | 0L |
поплавок | 0.0f |
двойной | 0,0d |
знак | ‘\ u0000’ |
Строка (или любой объект) | null |
логическое | ложь |
Локальные переменные немного отличаются; компилятор никогда не присваивает значение по умолчанию неинициализированной локальной переменной. Если вы не можете инициализировать свою локальную переменную там, где она объявлена, не забудьте присвоить ей значение, прежде чем пытаться использовать ее.Доступ к неинициализированной локальной переменной приведет к ошибке времени компиляции.
Литералы
Вы могли заметить, что ключевое слово new
не используется при инициализации переменной примитивного типа. Примитивные типы — это особые типы данных, встроенные в язык; они не объекты, созданные из класса. Литерал — это представление исходного кода фиксированного значения; литералы представлены непосредственно в вашем коде, не требуя вычислений. Как показано ниже, можно присвоить литерал переменной примитивного типа:
логический результат = истина; char capitalC = 'C'; байт b = 100; короткий s = 10000; int i = 100000;
Целочисленные литералы
Целочисленный литерал имеет тип длиной
, если он заканчивается буквой L
или l
; в противном случае это тип int
.Рекомендуется использовать прописную букву L
, потому что строчную букву l
трудно отличить от цифры 1
.
Значения целочисленных типов byte
, short
, int
и long
могут быть созданы из int
литералов. Значения типа long
, которые превышают диапазон int
, могут быть созданы из long
литералов. Целочисленные литералы могут быть выражены с помощью этих систем счисления:
- Десятичный: основание 10, цифры которого состоят из чисел от 0 до 9; это система счисления, которую вы используете каждый день
- Шестнадцатеричный: основание 16, цифры которого состоят из цифр от 0 до 9 и букв от A до F
- Двоичный: База 2, цифры которого состоят из чисел 0 и 1 (вы можете создавать двоичные литералы в Java SE 7 и более поздних версиях)
Для универсального программирования десятичная система, вероятно, будет единственной системой счисления, которую вы когда-либо будете использовать.Однако, если вам нужно использовать другую систему счисления, следующий пример показывает правильный синтаксис. Префикс 0x
указывает на шестнадцатеричный, а 0b
указывает на двоичный:
// Число 26 в десятичном формате int decVal = 26; // Число 26 в шестнадцатеричном формате int hexVal = 0x1a; // Число 26 в двоичном формате int binVal = 0b11010;
Литералы с плавающей запятой
Литерал с плавающей запятой имеет тип float
, если он заканчивается буквой F
или f
; в противном случае его тип — double
и может оканчиваться буквой D
или d
.
Типы с плавающей запятой ( float
и double
) также могут быть выражены с помощью E или e (для научной записи), F или f (32-битный литерал с плавающей запятой) и D или d (64-битный двойной литерал; это является значением по умолчанию и по соглашению опускается).
двойной d1 = 123,4; // то же значение, что и d1, но в экспоненциальном представлении двойной d2 = 1.234e2; float f1 = 123.4f;
Символьные и строковые литералы
Литералы типов char
и String
могут содержать любые символы Unicode (UTF-16).Если ваш редактор и файловая система позволяют это, вы можете использовать такие символы непосредственно в своем коде. Если нет, вы можете использовать «escape-последовательность Unicode», например '\ u0108'
(заглавная C с циркумфлексом) или «S = Se \ u00F1or»
(Sí Señor на испанском языке). Всегда используйте «одинарные кавычки» для литералов char
и «двойные кавычки» для литералов String
. Управляющие последовательности Unicode могут использоваться в другом месте программы (например, в именах полей), а не только в литералах char
или String
.
Язык программирования Java также поддерживает несколько специальных escape-последовательностей для литералов char
и String
: \ b
(backspace), \ t
(tab), \ n
(перевод строки), \ f
(подача страницы), \ r
(возврат каретки), \ "
(двойная кавычка), \ '
(одинарная кавычка) и \
(обратная косая черта).
Существует также специальный литерал null
, который можно использовать как значение для любого ссылочного типа. null
может быть присвоено любой переменной, кроме переменных примитивных типов. Вы мало что можете сделать со значением null
, кроме проверки его наличия. Поэтому null
часто используется в программах в качестве маркера, чтобы указать, что какой-то объект недоступен.
Наконец, существует также особый вид литерала, называемый литералом класса , образованный путем взятия имени типа и добавления « .class»
; например String.class
.Это относится к объекту (типа Class
), который представляет сам тип.
Использование символов подчеркивания в числовых литералах
В Java SE 7 и более поздних версиях любое количество символов подчеркивания ( _
) может находиться где угодно между цифрами в числовом литерале. Эта функция позволяет вам, например. для разделения групп цифр в числовых литералах, что может улучшить читаемость вашего кода.
Например, если ваш код содержит числа с большим количеством цифр, вы можете использовать символ подчеркивания для разделения цифр на группы по три, аналогично тому, как вы использовали бы знак препинания, такой как запятая, или пробел в качестве разделителя.
В следующем примере показаны другие способы использования символа подчеркивания в числовых литералах:
long creditCardNumber = 1234_5678_9012_3456L; long socialSecurityNumber = 999_99_9999L; float pi = 3.14_15F; длинный hexBytes = 0xFF_EC_DE_5E; длинные шестнадцатеричные слова = 0xCAFE_BABE; длинный maxLong = 0x7fff_ffff_ffff_ffffL; byte nybbles = 0b0010_0101; длинные байты = 0b11010010_01101001_10010100_10010010;
Знаки подчеркивания можно ставить только между цифрами; нельзя ставить подчеркивания в следующих местах:
- В начале или конце числа
- Рядом с десятичной запятой в литерале с плавающей запятой
- До суффикса
F
илиL
- В позициях, где ожидается строка цифр
В следующих примерах демонстрируются допустимые и недопустимые места подчеркивания (выделенные) в числовых литералах:
// Недействительно: нельзя ставить символы подчеркивания // рядом с десятичной точкой поплавок pi1 = 3_.1415F; // Недействительно: нельзя ставить символы подчеркивания // рядом с десятичной точкой float pi2 = 3._1415F; // Недействительно: нельзя ставить символы подчеркивания // до суффикса L long socialSecurityNumber1 = 999_99_9999_L; // ОК (десятичный литерал) интервал x1 = 5_2; // Недействительно: нельзя ставить символы подчеркивания // В конце литерала int x2 = 52_; // ОК (десятичный литерал) int x3 = 5_______2; // Недействительно: нельзя ставить символы подчеркивания // в префиксе системы счисления 0x int x4 = 0_x52; // Недействительно: нельзя ставить символы подчеркивания // в начале числа int x5 = 0x_52; // ОК (шестнадцатеричный литерал) int x6 = 0x5_2; // Недействительно: нельзя ставить символы подчеркивания // в конце числа int x7 = 0x52_;
диапазонов типов данных | Документы Microsoft
- 2 минуты на чтение
В этой статье
32-разрядные и 64-разрядные компиляторы Microsoft C ++ распознают типы, указанные в таблице далее в этой статье.
int
(беззнаковый int
)__int8
(без знака __int8
)__int16
(без знака __int16
)__int32
(без знака __int32
)__int64
(без знака __int64
)короткий
(беззнаковый короткий
)длинный
(беззнаковый длинный
)длинный длинный
(беззнаковый длинный длинный
)
Если его имя начинается с двух знаков подчеркивания ( __
), тип данных нестандартный.
Диапазоны, указанные в следующей таблице, включают включительно.
Название типа | байтов | Другие названия | Диапазон значений |
---|---|---|---|
внутренний | 4 | подписанный | -2 147 483 648 до 2 147 483 647 |
Целое без знака | 4 | без знака | 0 до 4 294 967 295 |
__int8 | 1 | симв. | -128 до 127 |
без знака __int8 | 1 | символ без знака | от 0 до 255 |
__int16 | 2 | короткий , короткий int , подписанный короткий int | -32 768 до 32 767 |
без знака __int16 | 2 | беззнаковое короткое , беззнаковое короткое int | 0 до 65 535 |
__int32 | 4 | подписано , подписано int , int | -2 147 483 648 до 2 147 483 647 |
без знака __int32 | 4 | без знака , без знака int | 0 до 4 294 967 295 |
__int64 | 8 | длинный длинный , подписанный длинный длинный | -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 |
без знака __int64 | 8 | беззнаковое длинное длинное | 0 до 18 446 744 073 709 551 615 |
булев | 1 | нет | ложно или истинно |
симв. | 1 | нет | от -128 до 127 по умолчанию от 0 до 255 при компиляции с использованием |
символ со знаком | 1 | нет | -128 до 127 |
символ без знака | 1 | нет | от 0 до 255 |
короткий | 2 | короткий int , подписанный короткий int | -32 768 до 32 767 |
беззнаковое короткое | 2 | беззнаковое короткое int | 0 до 65 535 |
длинный | 4 | длинный int , подписанный длинный int | -2 147 483 648 до 2 147 483 647 |
длинное без знака | 4 | беззнаковое длинное целое число | 0 до 4 294 967 295 |
длинный длинный | 8 | нет (но эквивалентно __int64 ) | -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 |
беззнаковый длинный длинный | 8 | нет (но эквивалентно без знака __int64 ) | 0 до 18 446 744 073 709 551 615 |
Перечисление | варьируется | нет | |
с плавающей запятой | 4 | нет | 3.4E +/- 38 (7 цифр) |
двойной | 8 | нет | 1.7E +/- 308 (15 цифр) |
длинный двойной | то же, что двойной | нет | То же, что двойной |
wchar_t | 2 | __wchar_t | 0 до 65 535 |
В зависимости от того, как она используется, переменная __wchar_t
обозначает тип широких символов или многобайтовых символов.Используйте префикс L
перед символьной или строковой константой для обозначения константы типа расширенных символов.
signed
и unsigned
— это модификаторы, которые можно использовать с любым целочисленным типом, кроме bool
. Обратите внимание, что char
, signed char
и unsigned char
— это три разных типа для таких механизмов, как перегрузка и шаблоны.
Типы int
и unsigned int
имеют размер четыре байта. Однако переносимый код не должен зависеть от размера int
, потому что стандарт языка допускает, чтобы это зависело от реализации.
C / C ++ в Visual Studio также поддерживает целочисленные типы размера. Для получения дополнительной информации см. __int8, __int16, __int32, __int64
и Integer Limits.
Для получения дополнительной информации об ограничениях размеров каждого типа см. Встроенные типы.
Диапазон перечисляемых типов зависит от языкового контекста и указанных флагов компилятора. Для получения дополнительной информации см. Объявления и перечисления перечислений C.
См. Также
Ключевые слова
Встроенные типы
MySQL :: Справочное руководство MySQL 8.0 :: 11.1.2 Целочисленные типы (точное значение)
11.1.2 Целочисленные типы (точное значение) — INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT
MySQL поддерживает стандартные целочисленные типы SQL. INTEGER
(или INT
) и МАЛЕНЬКИЙ
.Как расширение стандарта,
MySQL также поддерживает целочисленные типы TINYINT
, MEDIUMINT
и BIGINT
. В следующей таблице показаны
требуемое хранилище и диапазон для каждого целочисленного типа.
Таблица 11.1 Требуемое хранилище и диапазон для целочисленных типов, поддерживаемых MySQL
Тип | Память (байты) | Минимальное значение подписано | Минимальное значение без знака | Максимальное значение со знаком | Максимальное значение без знака |
---|---|---|---|---|---|
TINYINT | 1 | -128 | 0 | 127 | 255 |
МАЛЫЙ | 2 | -32768 | 0 | 32767 | 65535 |
СРЕДНИЙ | 3 | -8388608 | 0 | 8388607 | 16777215 |
ИНТ | 4 | -2147483648 | 0 | 2147483647 | 4294967295 |
BIGINT | 8 | -2 63 | 0 | 2 63 -1 | 2 64 -1 |
Числовые типы данных — документация Snowflake
Snowflake поддерживает следующие типы данных для чисел с плавающей запятой.
ПОПЛАВКОВЫЙ, ПОПЛАВКОВЫЙ4, ПОПЛАВКОВЫЙ 8¶
Snowflake использует числа с плавающей запятой двойной точности (64 бита) IEEE 754.
Точность составляет примерно 15 цифр. Например, для целых чисел диапазон составляет от —
Операции с плавающей запятой могут иметь небольшие ошибки округления, особенно если операнды имеют разную точность или шкала. Ошибки могут накапливаться, особенно когда агрегатные функции (например, SUM () или AVG ()) обрабатывают большое количество строк. Ошибки могут меняться каждый раз при выполнении запроса, если строки обрабатываются в другом порядке (например, если иначе в распределенной системе). Приведение к типу данных с фиксированной точкой перед агрегированием может уменьшить или устранить эти ошибки.
Snowflake поддерживает тип данных с фиксированной запятой NUMBER, что обеспечивает большую точность, хотя и меньший диапазон показателей.
Snowflake поддерживает следующие специальные значения для FLOAT:
Символы 'NaN'
, 'inf'
и '-inf'
должны быть в одинарных кавычках и регистронезависимы.
Семантика сравнения для 'NaN'
отличается от стандарта IEEE 754 следующим образом:
Состояние | Снежинка | IEEE 754 | Комментарий |
---|---|---|---|
| | | В Snowflake все значения |
| | | Snowflake рассматривает |
Имена FLOAT, FLOAT4 и FLOAT8 предназначены для совместимости с другими системами; Snowflake рассматривает все три как 64-битные числа с плавающей запятой.
базовых типов данных в Python — настоящий Python
Смотреть сейчас В этом руководстве есть связанный видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Базовые типы данных в Python
Теперь вы знаете, как взаимодействовать с интерпретатором Python и выполнять код Python. Пришло время углубиться в язык Python. Сначала мы обсудим основные типы данных, встроенные в Python.
Из этого руководства вы узнаете:
- Вы узнаете о нескольких базовых типах numeric, string и Boolean , встроенных в Python.К концу этого руководства вы будете знакомы с тем, как выглядят объекты этих типов и как их представлять.
- Вы также получите обзор встроенных в Python функций . Это заранее написанные фрагменты кода, которые вы можете вызывать для выполнения полезных вещей. Вы уже видели встроенную функцию
print ()
, но есть и многие другие.
Пройдите тест: Проверьте свои знания с помощью нашей интерактивной викторины «Основные типы данных в Python».По завершении вы получите оценку, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройти тест »
Целые числа
В Python 3 фактически нет ограничений на длину целочисленного значения. Конечно, оно, как и все остальное, ограничено объемом памяти вашей системы, но помимо этого целое число может быть сколь угодно длинным:
>>> >>> печать (123123123123123123123123123123123123123123123123 + 1)
123123123123123123123123123123123123123123123124
Python интерпретирует последовательность десятичных цифр без префикса как десятичное число:
Следующие строки могут быть добавлены к целочисленному значению, чтобы указать основание, отличное от 10:
Префикс | Интерпретация | База |
---|---|---|
0b (ноль + строчная буква 'b' ) 0B (ноль + прописная буква 'B' ) | двоичный | 2 |
0o (ноль + строчная буква 'o' ) 0O (ноль + прописная буква 'O' ) | восьмеричный | 8 |
0x (ноль + строчная буква 'x' ) 0X (ноль + прописная буква 'X' ) | Шестнадцатеричный | 16 |
Например:
>>> >>> печать (0o10)
8
>>> печать (0x10)
16
>>> print (0b10)
2
Дополнительные сведения о целочисленных значениях с недесятичным основанием см. На следующих сайтах Википедии: двоичный, восьмеричный и шестнадцатеричный.
Базовый тип целого числа Python, независимо от базы, используемой для его определения, называется int
:
>>> тип (10)
<класс 'int'>
>>> тип (0o10)
<класс 'int'>
>>> тип (0x10)
<класс 'int'>
Примечание: Сейчас хорошее время, чтобы упомянуть, что если вы хотите отобразить значение во время сеанса REPL, вам не нужно использовать функцию print ()
. Просто введите значение в строке >>>
и нажмите Enter , чтобы отобразить его:
>>> 10
10
>>> 0x10
16
>>> 0b10
2
Многие примеры в этой серии руководств будут использовать эту функцию.
Обратите внимание, что это не работает внутри файла сценария. Значение, появляющееся само по себе в строке файла сценария, ничего не делает.
Числа с плавающей запятой
Тип float
в Python обозначает число с плавающей запятой. float Значения
указываются с десятичной точкой. При желании можно добавить символ e
или E
, за которым следует положительное или отрицательное целое число, чтобы указать экспоненциальную нотацию:
>>> 4.2
4.2
>>> тип (4.2)
<класс 'float'>
>>> 4.
4.0
>>> .2
0,2
>>> .4e7
4000000,0
>>> введите (.4e7)
<класс 'float'>
>>> 4.2e-4
0,00042
Deep Dive: представление с плавающей запятой
Ниже приводится более подробная информация о том, как Python внутренне представляет числа с плавающей запятой. Вы можете легко использовать числа с плавающей запятой в Python, не понимая их до этого уровня, поэтому не беспокойтесь, если это кажется слишком сложным.Информация представлена здесь на случай, если вам интересно.
Почти все платформы представляют значения Python
>>>float
как 64-битные значения «двойной точности» в соответствии со стандартом IEEE 754. В этом случае максимальное значение, которое может иметь число с плавающей запятой, составляет примерно 1,8 Â 10 308 . Python укажет число больше, чем это, в строкеinf
:>>> 1.79e308 1.79e + 308 >>> 1.8e308 инф
Самое близкое к нулю ненулевое число — приблизительно 5.0 ⨉ 10 -324 . Все, что ближе к нулю, фактически равно нулю:
>>>>>> 5e-324 5e-324 >>> 1e-325 0,0
Числа с плавающей запятой внутри представлены в виде двоичных (основание 2) дробей. Большинство десятичных дробей не могут быть представлены точно как двоичные дроби, поэтому в большинстве случаев внутреннее представление числа с плавающей запятой является приближением фактического значения. На практике разница между фактическим значением и представленным значением очень мала и обычно не вызывает серьезных проблем.
Комплексные числа
Комплексные числа задаются как <действительная часть> + <мнимая часть> j
. Например:
>>> 2 + 3j
(2 + 3j)
>>> тип (2 + 3j)
<класс 'сложный'>
Струны
Строки — это последовательности символьных данных. Тип строки в Python называется str
.
Строковые литералы могут быть разделены одинарными или двойными кавычками. Все символы между открывающим разделителем и совпадающим закрывающим разделителем являются частью строки:
>>> >>> print ("Я строка.")
Я струна.
>>> type («Я - строка.»)
<класс 'str'>
>>> print ('Я тоже.')
Я тоже.
>>> введите ('Я тоже.')
<класс 'str'>
Строка в Python может содержать сколько угодно символов. Единственное ограничение — это ресурсы памяти вашего компьютера. Строка также может быть пустой:
Что, если вы хотите включить кавычки как часть самой строки? Вашим первым импульсом может быть что-то вроде этого:
>>> >>> print ('Эта строка содержит одинарную кавычку (').')
SyntaxError: недопустимый синтаксис
Как видите, это не так хорошо. Строка в этом примере открывается одинарной кавычкой, поэтому Python предполагает, что следующая одинарная кавычка, заключенная в круглые скобки, которая должна была быть частью строки, является закрывающим разделителем. В этом случае последняя одинарная кавычка является ошибочной и вызывает указанную синтаксическую ошибку.
Если вы хотите включить в строку символ кавычки любого типа, самый простой способ — разделить строку другим типом.Если строка должна содержать одинарную кавычку, разделите ее двойными кавычками и наоборот:
>>> >>> print («Эта строка содержит символ одинарной кавычки (').»)
Эта строка содержит символ одинарной кавычки (').
>>> print ('Эта строка содержит символ двойной кавычки (").')
Эта строка содержит символ двойной кавычки (").
escape-последовательности в строках
Иногда требуется, чтобы Python по-разному интерпретировал символ или последовательность символов в строке.Это может произойти одним из двух способов:
- Вы можете захотеть подавить специальную интерпретацию, которую обычно дают определенные символы в строке.
- Вы можете применить специальную интерпретацию к символам в строке, которые обычно воспринимаются буквально.
Это можно сделать с помощью символа обратной косой черты ( \
). Символ обратной косой черты в строке указывает на то, что один или несколько следующих за ним символов следует обрабатывать особым образом.(Это называется escape-последовательностью, потому что обратная косая черта заставляет последующую последовательность символов «ускользать» от своего обычного значения.)
Давайте посмотрим, как это работает.
Подавление значения специальных символов
Вы уже видели проблемы, с которыми вы можете столкнуться, когда пытаетесь включить символы кавычек в строку. Если строка разделена одинарными кавычками, вы не можете напрямую указать символ одинарной кавычки как часть строки, потому что для этой строки одинарная кавычка имеет особое значение — она завершает строку:
>>> >>> print ('Эта строка содержит одинарную кавычку (').')
SyntaxError: недопустимый синтаксис
Указание обратной косой черты перед символом кавычки в строке «ускользает» от нее и заставляет Python подавлять его обычное особое значение. Затем он интерпретируется просто как буквальный символ одинарной кавычки:
>>> >>> print ('Эта строка содержит символ одинарной кавычки (\'). ')
Эта строка содержит символ одинарной кавычки (').
То же самое работает и со строкой, разделенной двойными кавычками:
>>> >>> print ("Эта строка содержит символ двойной кавычки (\").")
Эта строка содержит символ двойной кавычки (").
Ниже приводится таблица управляющих последовательностей, которые заставляют Python подавлять обычную специальную интерпретацию символа в строке:
Побег Последовательность | Обычная интерпретация символа (ов) после обратной косой черты | Интерпретация «сбежавших» |
---|---|---|
\ ' | Завершает строку открывающим разделителем в одинарных кавычках | Буквальная одинарная кавычка ( ' ) символ |
\ " | Завершает строку открывающим разделителем в двойных кавычках | Буквальная двойная кавычка ( " ) символ |
\ новая строка | Завершает входную строку | Новая строка игнорируется |
\ | вводит escape-последовательность | Литеральная обратная косая черта ( \ ) символ |
Обычно символ новой строки завершает ввод строки.Таким образом, нажатие Enter в середине строки заставит Python думать, что это неполно:
>>> >>> print ('a
SyntaxError: EOL при сканировании строкового литерала
Чтобы разбить строку на более чем одну строку, используйте обратную косую черту перед каждой новой строкой, и новые строки будут игнорироваться:
>>> >>> print ('a \
... б \
... в ')
abc
Чтобы включить буквальную обратную косую черту в строку, экранируйте ее обратной косой чертой:
>>> >>> print ('foo \\ bar')
foo \ bar
Применение специального значения к символам
Затем предположим, что вам нужно создать строку, содержащую символ табуляции.Некоторые текстовые редакторы позволяют вставлять символ табуляции прямо в код. Но многие программисты считают это плохой практикой по нескольким причинам:
- Компьютер может различать символ табуляции и последовательность пробелов, но вы не можете. Для человека, читающего код, символы табуляции и пробела визуально неразличимы.
- Некоторые текстовые редакторы настроены на автоматическое удаление символов табуляции путем расширения их до необходимого количества пробелов.
- Некоторые среды Python REPL не вставляют вкладки в код.
В Python (и почти на всех других распространенных компьютерных языках) символ табуляции может быть указан с помощью escape-последовательности \ t
:
>>> print ('foo \ tbar')
foo bar
Управляющая последовательность \ t
приводит к тому, что символ t
теряет свое обычное значение, буквальное значение t
. Вместо этого комбинация интерпретируется как символ табуляции.
Вот список escape-последовательностей, которые заставляют Python применять особое значение вместо буквальной интерпретации:
Последовательность выхода | Интерпретация «сбежавших» |
---|---|
\ а | ASCII Bell ( BEL ) символ |
\ б | ASCII Backspace ( BS ) символ |
\ f | ASCII Formfeed ( FF ) символ |
\ п | Символ перевода строки ASCII ( LF ) |
\ N {<имя>} | Символ из базы данных Unicode с данным <имя> |
\ r | Символ возврата каретки ASCII ( CR ) |
\ т | ASCII горизонтальная табуляция ( TAB ) символ |
\ uxxxx | Символ Юникода с 16-битным шестнадцатеричным значением xxxx |
\ Uxxxxxxxx | Символ Юникода с 32-битным шестнадцатеричным значением xxxxxxxx |
\ v | ASCII вертикальная табуляция ( VT ) символ |
\ ooo | Знак с восьмеричным числом ooo |
\ xhh | Символ с шестнадцатеричным значением hh |
Примеры:
>>> >>> print ("a \ tb")
а б
>>> print ("a \ 141 \ x61")
ааа
>>> print ("a \ nb")
а
б
>>> print ('\ u2192 \ N {стрелка вправо}')
→ →
Этот тип escape-последовательности обычно используется для вставки символов, которые нелегко генерировать с клавиатуры или которые трудно читать или печатать.
Сырые струны
Необработанному строковому литералу предшествует r
или R
, который указывает, что escape-последовательности в связанной строке не транслируются. В строке остается символ обратной косой черты:
>>> print ('foo \ nbar')
фу
бар
>>> print (r'foo \ nbar ')
foo \ nbar
>>> print ('foo \\ bar')
foo \ bar
>>> print (R'foo \\ bar ')
foo \\ бар
Струны с тройными кавычками
В Python есть еще один способ разграничения строк.Строки в тройных кавычках разделяются совпадающими группами из трех одинарных или трех двойных кавычек. Escape-последовательности по-прежнему работают в строках, заключенных в тройные кавычки, но одинарные кавычки, двойные кавычки и символы новой строки могут быть включены без их экранирования. Это обеспечивает удобный способ создания строки как с одинарными, так и с двойными кавычками:
>>> >>> print ('' 'Эта строка состоит из одинарной (') и двойной (") кавычек. '' ')
Эта строка состоит из одинарных (') и двойных (") кавычек.
Поскольку новые строки могут быть включены без их экранирования, это также позволяет использовать многострочные строки:
>>> >>> print ("" "Это
строка, которая охватывает
через несколько строк "" ")
Это
строка, которая охватывает
через несколько строк
В предстоящем руководстве по структуре программы Python вы увидите, как можно использовать строки в тройных кавычках для добавления пояснительного комментария к коду Python.
Логический тип, логический контекст и «истинность»
Python 3 предоставляет логический тип данных. Объекты типа Boolean могут иметь одно из двух значений: True
или False
:
>>> тип (True)
<класс 'bool'>
>>> type (Ложь)
<класс 'bool'>
Как вы увидите в следующих руководствах, выражения в Python часто оцениваются в логическом контексте, что означает, что они интерпретируются как представление истины или лжи.Значение, истинное в логическом контексте, иногда называют «правдивым», а значение, которое ложно в логическом контексте, называется «ложным». (Вы также можете встретить слово «ложь», написанное как «ложь».)
«Правдивость» объекта логического типа очевидна: логические объекты, которые равны True
, являются истинными (истинными), а те, которые равны False
, являются ложными (ложными). Но не-логические объекты также могут быть оценены в логическом контексте и определены как истинные или ложные.
Вы узнаете больше об оценке объектов в логическом контексте, когда столкнетесь с логическими операторами в предстоящем руководстве по операторам и выражениям в Python.
Встроенные функции
Интерпретатор Python поддерживает множество встроенных функций: шестьдесят восемь, начиная с Python 3.6. Вы рассмотрите многие из них в следующих обсуждениях, поскольку они возникают в контексте.
На данный момент следует краткий обзор, чтобы дать представление о том, что доступно. См. Документацию Python по встроенным функциям для получения более подробной информации. Многие из следующих описаний относятся к темам и концепциям, которые будут обсуждаться в будущих руководствах.
Математика
Функция | Описание |
---|---|
абс. () | Возвращает абсолютное значение числа |
divmod () | Возвращает частное и остаток от целочисленного деления. | .
макс. () | Возвращает наибольший из заданных аргументов или элементов в итерации. |
мин () | Возвращает наименьший из заданных аргументов или элементов в итерации. |
pow () | Возводит число в степень |
круглый () | Округляет значение с плавающей запятой |
сумма () | Суммирует элементы итерации |
Преобразование типа
Функция | Описание |
---|---|
ascii () | Возвращает строку, содержащую печатное представление объекта |
бункер () | Преобразует целое число в двоичную строку |
булев () | Преобразует аргумент в логическое значение |
chr () | Возвращает строковое представление символа, заданного целочисленным аргументом |
комплекс () | Возвращает комплексное число, составленное из аргументов |
поплавок () | Возвращает объект с плавающей запятой, состоящий из числа или строки |
шестигранник () | Преобразует целое число в шестнадцатеричную строку |
внутр () | Возвращает целочисленный объект, состоящий из числа или строки |
окт. () | Преобразует целое число в восьмеричную строку |
орд () | Возвращает целочисленное представление символа |
представитель () | Возвращает строку, содержащую печатное представление объекта |
ул. () | Возвращает строковую версию объекта |
тип () | Возвращает тип объекта или создает объект нового типа |
Итераторы и итераторы
Функция | Описание |
---|---|
все () | Возвращает Истина , если все элементы итерируемого значения истинны |
любой () | Возвращает True , если какие-либо элементы итерации верны |
перечислить () | Возвращает список кортежей, содержащих индексы и значения из итерируемого |
фильтр () | Фильтрует элементы из итерируемого |
итер () | Возвращает объект-итератор |
лин () | Возвращает длину объекта |
карта () | Применяет функцию к каждому элементу итерации |
следующая () | Извлекает следующий элемент из итератора |
диапазон () | Создает диапазон целых значений |
обратное () | Возвращает обратный итератор |
ломтик () | Возвращает фрагмент объект |
отсортировано () | Возвращает отсортированный список из итерируемого |
застежка-молния () | Создает итератор, который объединяет элементы из итераций |
Составной тип данных
Функция | Описание |
---|---|
байтовый массив () | Создает и возвращает объект массива байтов class |
байта () | Создает и возвращает объект байта (аналог bytearray , но неизменяемый) |
диктант () | Создает dict объект |
морозильник () | Создает frozenset объект |
список () | Создает список объект |
объект () | Создает новый безликий объект |
комплект () | Создает набор объект |
кортеж () | Создает кортеж объект |
Классы, атрибуты и наследование
Функция | Описание |
---|---|
метод класса () | Возвращает метод класса для функции |
delattr () | Удаляет атрибут из объекта |
getattr () | Возвращает значение именованного атрибута объекта |
hasattr () | Возвращает Истина , если объект имеет заданный атрибут |
isinstance () | Определяет, является ли объект экземпляром данного класса |
issubclass () | Определяет, является ли класс подклассом данного класса |
недвижимость () | Возвращает значение свойства класса |
setattr () | Устанавливает значение именованного атрибута объекта |
супер () | Возвращает прокси-объект, который делегирует вызовы методов родительскому или одноуровневому классу |
Ввод / вывод
Функция | Описание |
---|---|
формат () | Преобразует значение в форматированное представление |
вход () | Считывает ввод с консоли |
открытый () | Открывает файл и возвращает объект файла |
печать () | Печать в текстовый поток или консоль |
Переменные, ссылки и область действия
Функция | Описание |
---|---|
директ () | Возвращает список имен в текущей локальной области или список атрибутов объекта |
глобальные () | Возвращает словарь, представляющий текущую глобальную таблицу символов |
id () | Возвращает идентификатор объекта |
местные жители () | Обновляет и возвращает словарь, представляющий текущую локальную таблицу символов |
варс () | Возвращает __dict__ атрибут для модуля, класса или объекта |
Разное
Функция | Описание |
---|---|
для вызова () | Возвращает Истина , если объект кажется вызываемым |
компиляция () | Компилирует исходный код в код или объект AST |
eval () | Вычисляет выражение Python |
exec () | Реализует динамическое выполнение кода Python |
хеш () | Возвращает хеш-значение объекта |
справка () | Вызывает встроенную справочную систему |
просмотр памяти () | Возвращает объект просмотра памяти |
статический метод () | Возвращает статический метод для функции |
__импорт __ () | Вызывается оператором импорта |
Заключение
В этом руководстве вы узнали о встроенных функциях типов данных и , которые предоставляет Python.
Все приведенные до сих пор примеры манипулировали и отображали только постоянные значения. В большинстве программ вы обычно хотите создавать объекты, значение которых изменяется по мере выполнения программы.
Перейдите к следующему руководству, чтобы узнать о переменных Python .
Пройдите тест: Проверьте свои знания с помощью нашей интерактивной викторины «Основные типы данных в Python». По завершении вы получите оценку, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройти тест »
Смотреть сейчас В этом руководстве есть связанный видеокурс, созданный командой Real Python.Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Базовые типы данных в Python
Как выбрать правильные типы данных
По мере того, как объем данных типичной компании растет в геометрической прогрессии, становится еще более важным оптимизировать хранение данных. Размер ваших данных не только влияет на размер хранилища и стоимость, он также влияет на производительность запросов. Ключевым фактором при определении размера ваших данных является выбранный вами тип данных. В этом руководстве объясняется, как выбрать правильные типы данных.
Что такое типы данных?
Типы данных определяют, какой тип и диапазон данных могут храниться в данном поле (или столбце).
Рассмотрим таблицу продаж со следующими примерами записей:
Каждое поле имеет свой тип и диапазон значений:
Purchase_time : дата и время продажи sale_id : целочисленные значения, увеличивающиеся на единицу для каждой новой продажи customer_id : целые значения, увеличивающиеся на единицу для каждого нового клиента валюта : текст всегда в трехзначном коде валюты amount_paid : денежные действительные числовые значения от 0 до $.00 и 1 000 долларов США устройство : текст, где могут быть следующие значения: «рабочий стол», «мобильное приложение» и «мобильный Интернет». has_discount : логическое, где записи могут быть ИСТИНА
или ЛОЖЬ
примечания : текст, длина которого может быть столько, сколько разрешено в нашем инструменте ввода агента (250 символов)
Тип данных (целые числа, текст, действительные числа и т. Д.) И возможные диапазоны значений (от 0 до 1000; любые 3 символа и т. Д.) Соответствуют конкретной базе данных типов данных .
Каковы возможные типы данных?
В разных базах данных доступны разные типы данных, но большинство из них попадают в эти категории:
Числовой:
- целых : для чисел без дробей. Может быть подписанным (разрешены положительные и отрицательные значения) или беззнаковым (разрешены только положительные числа). Обычно используется для полей идентификаторов и подсчетов чего-либо
- десятичное (x, y) : для чисел с дробями, требующих точной точности.Может быть подписанным (разрешены положительные и отрицательные значения) или беззнаковым (разрешены только положительные числа). Обычно используется для денежных полей. Пользователь указывает общее допустимое количество значащих цифр (x) и после десятичной точки (y) в круглых скобках
- float / doubles : для чисел с дробями, не требующих точной точности. Может быть подписанным (разрешены положительные и отрицательные значения) или беззнаковым (разрешены только положительные числа). Обычно используется для всех действительных чисел, кроме денежных полей
Дата / время:
дата : для значений даты
- время : для значений времени
- timestamp / datetime : для значений даты и времени
Текст:
- символ (n) : для символьных строк фиксированной длины, где значение в скобках определяет фиксированный размер каждой записи
- varchar (n) : для символьных строк переменной длины, где значение в скобках определяет максимально допустимый размер каждой записи
Логическое:
- boolean : для логических (истина / ложь) значений.Некоторые базы данных (например, MySQL) не имеют логического типа данных и вместо этого преобразуют логические значения в целые числа (1 = ИСТИНА, 0 = ЛОЖЬ)
Большинство баз данных предлагают варианты размера для каждого типа. Например, MySQL предоставляет следующие возможные целочисленные типы данных:
Как выбрать правильные типы данных
Основная стратегия выбора наилучшего типа данных состоит в выборе наименьшего типа данных, который соответствует типу имеющихся у вас данных и допускает все возможные значения ваших данных.
Например, customer_id
в нашей таблице продаж — это целое число, начинающееся с 0. Сегодня у нашей вымышленной компании всего 15 000 клиентов. Используя таблицу целочисленных типов данных MySQL из предыдущего раздела, у нас может возникнуть соблазн выбрать SMALLINT
unsigned в качестве типа данных, поскольку это наименьший тип данных, который будет принимать наши текущие целочисленные значения от 0 до 15000. Однако мы рассчитываем привлечь 100 000 клиентов в течение следующих 6-12 месяцев. Когда мы превысим 65 535, SMALLINT
уже будет недостаточно.Таким образом, лучший выбор — это MEDIUMINT
без знака, который должен охватывать нас в течение следующих нескольких лет.
Вы можете позволить базе данных выбирать типы данных за вас при создании таблицы с примерами записей. Однако это редко дает вам лучший выбор типа данных. Например, если позволить MySQL выбирать типы данных для таблицы продаж с показанными ранее примерами значений, возникает несколько проблем.
Проблемы, с которыми мы сталкиваемся при автоматическом выборе типов данных MySQL:
- неправильный тип данных : вы не сможете использовать поле ожидаемым образом.Например, наличие
Purchase_time
в виде строки, а не типа данных времени означает, что вы не сможете выполнять операции со временем (например, вычислять, сколько времени прошло с момента покупки) в поле . - слишком ограничено : MySQL выдаст ошибки, когда вы попытаетесь ввести значения, которые больше, чем позволяет тип данных. Например, мы получим ошибку, если у нас будет продажа с amount_paid на сумму 100,00 долларов США или больше или если комментарий agent_comment длиннее 65 символов
- слишком консервативен : хотя ничто не сломается из-за слишком консервативного подхода к типам данных, вы потратите впустую место для хранения.С данными нашего примера мы могли бы сэкономить 15% хранилища, используя менее консервативные предпочтительные параметры
Какими бы умными ни были современные базы данных, владельцы данных все же лучше всех знают, какие данные хранятся и какие возможные значения могут принимать данные в обозримом будущем. Поэтому вам нужно тщательно указать типы данных для каждого из ваших полей.
Документация по типам данных для различных общих баз данных представлена здесь:
Заключение
Чтобы ваша база данных работала правильно и была максимально оптимизирована, важно тщательно выбирать типы данных для каждого поля в таблицах.