Вопрос
Через форму сайта пришел вопрос от читателя:... Python начал изучать недавно и наткнулся на термин "литерал" который мне не понятен, хоть убейте не пойму что и как к нему относится, прошу объясните.На мою просьбу описать контекст читатель написал:
...в книге под термином литерал подразумевается выражение, создающее объект, который иногда также называется константой. Следует иметь в виду, что термин "константа" не означает объекты и переменные, которые никогда не изменяются.
То есть это вообще как, литерал подразумевает выражение, создающее объект, но в тоже время литерал может быть константой, но которая не означает объекты...
Получается к примеру: 4+5 = 9 -это выражение создающее объект а именно 9 ? Но литералом может быть и строка, тогда как создается здесь литерал, конкатенацией?? Дальше хуже, к спискам я вообще не понимаю тогда как.
Это определение выше одно из первых с которым я столкнулся, потом читал дальше и еще один пример: В таблице 5.1 показано, как выглядят числа различных типов в языке Python в тексте программы(то есть в виде литералов) и там идут целые числа, вещественные и т.д. но если это все должно быть результатом выражения, то почему в таблице это просто 9999999999, 1234, или же 1.23.
Ответ
Это одна из базовых концепций, но именно поэтому ее непросто объяснить "в сферической форме в вакууме". Я тоже помню, как не сразу понял что это означает. Взялся было отвечать читателю в почте, но когда увидел, что текст получился довольно объемный, решил запостить его в блоге, может еще кому-то пригодится.Если простыми словами, то литерал в Python – это простейший способ создания объектов. Например:
1 # числовой литерал
"I'am a string" # строковый литерал
[1, 2, 4, 6] # литерал списка
{'a': 1, 'b': 2, 'c': 3} # литерал словаря
Но, поскольку такая запись не имеет смысла, так как с созданным объектом нужно что-то сделать или чему-то присвоить, то обычно все примеры в литературе пишутся в виде:
a = 1
На этом месте у новичка уже глаза разбегаются – где здесь что. Так вот, слева – переменная, справа – литерал. Далее, по письму:
... под термином литерал подразумевается выражение, создающее объект...Не верно. В Python выражение и литерал – две большие разницы, как говорят в Одессе. Литерал – это форма записи (см. примеры выше).
Получается к примеру: 4+5 = 9 -это выражение создающее объект а именно 9…То же самое,
4 + 5
– это выражение, не литерал. Таким образом, чтобы как-то называть общим названием такие простейшие записи, как
4.5
, 'my string'
, [1, 'abc', 45]
, применяют слово литерал. В большинстве случаев смысл этого термина не играет большой роли для понимания сути, часто его можно просто игнорировать. Возможно, он ближе к области лингвистики. Например, нужно понимать разницу, когда кто-то скажет: "А давайте-ка создадим этот словарь не с помощью литерала, а с помощью builtin". Разница будет выглядеть так:
mydict = dict(a=1, b=2, c=3)
mydict = {'a': 1, 'c': 3, 'b': 2}
В первом случае мы создаем словарь с помощью встроенной функции dict(), а во втором – с помощью литерала словаря. ... Математика – не наука, а язык для выражения научных идей.Так что, да – к терминам надо относиться с уважением.
И спасибо посетителю за вопрос!