Ответ 1
Парсер Python запрещает именовать переменные таким образом, ради разбора чисел и переменных отдельно, поскольку именование переменной 1e1
создаст хаос - это число 10.0
или переменная 1e1
?
"Python, пожалуйста, выведите для меня 1e1
!" - "Почему это 10.0? Я хранил 100 там!"
Но переменные на самом деле хранятся таким образом, что позволяют привязывать строку, начинающуюся с числа до значения, потому что эта функция не вредит картам хэширования любого типа, и поэтому, используя этот "трюк", вы можете требуемая переменная numeric-prefixed-name без ущерба для разборчивости анализатора.
Я бы сказал, что технически, именование переменных таким образом не является нарушением для руководящих принципов python, но оно крайне обескуражено и, как правило, не нужно. Использование globals
для инъекций переменных называется очень сильной плохой практикой, и этот случай не должен быть выдающимся.
Конечно, python мог использовать приложение для цифр, например, строки *123*
, но я считаю, что цель изобретения python заключалась в том, чтобы упростить программирование, а не растягивать границы пространства имен имен переменных.
Практически говоря, если вы должны использовать имена с числовыми именами, лучше сделать это с помощью своего собственного словаря, а не globals
:
>>> number_headed_vars = {'1a': 100}
>>> number_headed_vars['1a']
100
Таким образом, вы можете создать свою собственную систему переменных - и избегать злоупотребления globals()
.