Python анализатор запрещает называть переменные, что путь, ради чисел разбора и переменных в отдельности, как именовании переменная 1e1
создаст хаос - это номер 10.0
или переменная 1e1
?
"Python, пожалуйста, выведите для меня 1e1
!" - «Почему это 10,0? Я хранил 100!»
Но переменных фактически хранятся таким образом, что позволяет связывающей строку, которая начинается с числом до значения, потому что функция не будет никакой вреда в хэширования карт любого рода, и поэтому с помощью этого «трюка» вы можете достигнуть нужной переменной числовой префикс-имя, не повредив разборчивость анализатора.
Я бы сказал, что технически переименование переменных таким образом - не является нарушением руководящим принципам python, но он крайне не рекомендуется и, как правило, не нужен. Использование globals
для инъекций переменных известно как очень плохая практика , и этот случай не должен быть выдающимся.
Конечно, питон мог бы использовал encloser для числительных, как строки, скажу *123*
, но я считаю, что цель изобрести питон была сделать программирование проще, не выходит за пределы переменного пространства имен.
Практически говоря, если вы MUST использовать имена номер возглавляемые лучше сделать это с вашим собственным словарем, а не globals
:
>>> number_headed_vars = {'1a': 100}
>>> number_headed_vars['1a']
100
Таким образом, вы можете создать свою собственную систему переменных - и избегать злоупотребления globals()
.
Парсер запрещает это, но вы можете сделать это, захватив 'globals()'. Но вы на самом деле не намерены это делать. – Kevin
Вы не можете использовать его как переменную позже ... так что это не настоящая переменная, хотя она находится в одном и том же пространстве имен. – tdelaney
Ваш ответ (дубликат): http://stackoverflow.com/questions/342152/why-cant-variable-names-start-with-numbers – MichaelMMeskhi