👍3👎1
При обращении к элементу словаря 𝚜𝚌𝚘𝚛𝚎𝚜['𝙰', '𝙱'] 𝙿𝚢𝚝𝚑𝚘𝚗 интерпретирует '𝙰', '𝙱' как кортеж ('𝙰', '𝙱'), а не как два отдельных ключа.
Согласно
𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗_𝚕𝚒𝚜𝚝 ::= 𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗 ("," 𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗)∗ [","]
Таким образом, выражение 𝚜𝚌𝚘𝚛𝚎𝚜['𝙰', '𝙱'] эквивалентно 𝚜𝚌𝚘𝚛𝚎𝚜[('𝙰', '𝙱')].
В словаре 𝚜𝚌𝚘𝚛𝚎𝚜 есть только ключи '𝙰' и '𝙱', но нет ключа ('𝙰', '𝙱'). При попытке обращения к несуществующему ключу словарь генерирует исключение 𝙺𝚎𝚢𝙴𝚛𝚛𝚘𝚛.
Для получения нескольких значений из словаря нужно использовать отдельные обращения или методы словаря, например:
− 𝚜𝚌𝚘𝚛𝚎𝚜['𝙰'], 𝚜𝚌𝚘𝚛𝚎𝚜['𝙱']
− [𝚜𝚌𝚘𝚛𝚎𝚜[𝚔] 𝚏𝚘𝚛 𝚔 𝚒𝚗 ('𝙰', '𝙱')]
👍5❤1👎1
❤4👍1👎1
Согласно
𝚕𝚒𝚜𝚝_𝚍𝚒𝚜𝚙𝚕𝚊𝚢 ::= "[" [𝚜𝚝𝚊𝚛𝚛𝚎𝚍_𝚕𝚒𝚜𝚝 | 𝚌𝚘𝚖𝚙𝚛𝚎𝚑𝚎𝚗𝚜𝚒𝚘𝚗] "]"
𝚌𝚘𝚖𝚙𝚛𝚎𝚑𝚎𝚗𝚜𝚒𝚘𝚗 ::= 𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗 𝚌𝚘𝚖𝚙_𝚏𝚘𝚛
𝚌𝚘𝚖𝚙_𝚏𝚘𝚛 ::= "𝚏𝚘𝚛" 𝚝𝚊𝚛𝚐𝚎𝚝_𝚕𝚒𝚜𝚝 "𝚒𝚗" 𝚘𝚛_𝚝𝚎𝚜𝚝 [𝚌𝚘𝚖𝚙_𝚒𝚝𝚎𝚛]
В данном коде создается новый список 𝚙𝚛𝚘𝚌𝚎𝚜𝚜𝚎𝚍 с помощью выражения [𝚡 ∗ 𝟸 𝚏𝚘𝚛 𝚡 𝚒𝚗 𝚍𝚊𝚝𝚊]. Это выражение:
Список 𝚍𝚊𝚝𝚊 содержит элементы [𝟷, 𝟸, 𝟹]. После применения с.в. получается 𝚙𝚛𝚘𝚌𝚎𝚜𝚜𝚎𝚍 = [𝟸, 𝟺, 𝟼].
Далее выполняется обращение к элементу списка по индексу: 𝚙𝚛𝚘𝚌𝚎𝚜𝚜𝚎𝚍[𝟸].Индексация в 𝙿𝚢𝚝𝚑𝚘𝚗 начинается с нуля. Это означает, что:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👎1
👍4👎1
Синтаксис «лямбды» (согласно
𝚕𝚊𝚖𝚋𝚍𝚊_𝚎𝚡𝚙𝚛 ::= "𝚕𝚊𝚖𝚋𝚍𝚊" [𝚙𝚊𝚛𝚊𝚖𝚎𝚝𝚎𝚛_𝚕𝚒𝚜𝚝] ":" 𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗
В данном случае 𝚕𝚊𝚖𝚋𝚍𝚊−функция принимает два параметра: 𝚊 (обязательный) и 𝚋 (со значением по умолчанию 𝟻). При вызове 𝚊𝚍𝚍(𝟹) передается только один аргумент, который присваивается параметру 𝚊. Параметр 𝚋 использует значение по умолчанию, равное 𝟻.
Таким образом, выполняется операция: 𝟹 + 𝟻 = 𝟾.
👍5👎1
👍3👎1
«Переменная — это ссылка на объект в памяти».
Когда мы присваиваем переменной новое значение, переменная начинает ссылаться на другой объект.
В данном коде:
𝟷. Строка 𝟷: 𝚊 = 𝚃𝚛𝚞𝚎
Переменная 𝚊 ссылается на объект 𝚃𝚛𝚞𝚎 в памяти. Функция 𝚒𝚍() возвращает уникальный идентификатор объекта 𝚃𝚛𝚞𝚎.
𝟸. Строка 𝟹: 𝚊 = 𝙵𝚊𝚕𝚜𝚎
Переменная 𝚊 теперь ссылается на объект 𝙵𝚊𝚕𝚜𝚎 в памяти. Это совершенно другой объект, поэтому 𝚒𝚍() возвращает другой идентификатор.
Ключевой момент: 𝚃𝚛𝚞𝚎 и 𝙵𝚊𝚕𝚜𝚎 — это отдельные объекты в памяти. Когда мы изменяем значение переменной с 𝚃𝚛𝚞𝚎 на 𝙵𝚊𝚕𝚜𝚎, мы не изменяем сам объект 𝚃𝚛𝚞𝚎, а заставляем переменную 𝚊 ссылаться на другой объект — 𝙵𝚊𝚕𝚜𝚎.
Поэтому два вызова 𝚙𝚛𝚒𝚗𝚝(𝚒𝚍(𝚊)) покажут разные значения, так как переменная 𝚊 ссылается на разные объекты в памяти.
Это демонстрирует важную особенность: переменные не «содержат» значения, а являются ссылками на объекты. При изменении значения переменной меняется объект, на который она ссылается, а не содержимое самого объекта.
❤4👍2👎1
👍5👎2
Последовательность выполнения:
Из
«Операторы присваивания используются для (повторного) связывания имен со значениями и для изменения атрибутов или элементов изменяемых объектов»
При присваивании происходит связывание имени с объектом, а не копирование значения. Поэтому изменение значения одной переменной не влияет на другие переменные, которые ссылаются на тот же объект.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👎1
🧩 Какой символ РАЗРЕШЕН в именах переменных?
Anonymous Quiz
3%
- (дефис)
1%
# (решетка)
81%
_ (нижнее подчеркивание)
15%
Все разрешаются
👍5👎1
«Имена переменных могут содержать только следующие символы:
Поэтому из трех предложенных символов допустим только _ (𝚞𝚗𝚍𝚎𝚛𝚜𝚌𝚘𝚛𝚎).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👎1
👍3👎1
— Начинается с буквы;
— Содержит только буквы, цифры и подчеркивания;
— Соответствует всем правилам синтаксиса.
— Начинается с подчеркивания (что допустимо);
— Содержит только буквы, цифры и подчеркивания;
— Не является ключевым словом.
— Содержит дефис (-), который не является допустимым символом в именах переменных;
— Дефис интерпретируется как оператор вычитания, что приводит к синтаксической ошибке.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👎1
👍2👎1