Некоторые символы utf8 разрешены в источнике Python, некоторые нет

заметил, что я не могу использовать все символы Юникода в исходном коде Python.

Хотя

def 价(何):

совершенно нормально (хотя и бессмысленно [вероятно?]),

def N(N₀, t, λ) -> 'N(t)':

это недопустимо (нулевой индекс).

Я также не могу использовать некоторые другие символы, большинство который я распознаю как нечто отличное от букв (например, математические операторы). Я всегда думал, что если я просто буду придерживаться правил, которые я знаю, то есть составлять имена из букв и цифр, с буквой в качестве первого символа, все будет хорошо. Теперь нулевой индекс явно является «числом». поэтому мое впечатление было неправильным.

Я знаю, что следует избегать использования специальных символов. Однако, приведенное выше определение функции (экспоненциальное затухание) кажется мне совершенно разумным - потому что оно никогда не изменится, и оно так элегантно передает всю информацию, необходимую для его использования другим программистом.

Поэтому мой вопрос, какие именно символы разрешены, а какие нет? И где?

Редактировать
Ладно, похоже, я не был достаточно ясен. Я использую python3, поэтому нет необходимости декларировать кодировку исходного файла. Очевидно, с того времени я думал, что мое определение функции на китайском языке работает.

Мой вопрос касается того, почему одни символы там разрешены, а другие нет. какие именно символы разрешены, а какие нет? И где?

Редактировать
Ладно, похоже, я не был достаточно ясен. Я использую python3, поэтому нет необходимости декларировать кодировку исходного файла. Очевидно, с того времени я думал, что мое определение функции на китайском языке работает.

Мой вопрос касается того, почему одни символы там разрешены, а другие нет. какие именно символы разрешены, а какие нет? И где?

Редактировать
Ладно, похоже, я не был достаточно ясен. Я использую python3, поэтому нет необходимости декларировать кодировку исходного файла. Очевидно, с того времени я думал, что мое определение функции на китайском языке работает.

Мой вопрос касается того, почему одни символы там разрешены, а другие нет. Нижний индекс поднимает ошибку , недопустимый символ в идентификаторе, , но жирный ноль на доске работает. Обе они в равной степени особенные Я бы сказал.

Я хотел бы знать, есть ли какие-то общие правила, применимые не только к моей ситуации, они должны быть. Кажется, что моя ошибка не случайна.

Редактировать 2:

Ответ любезно предоставлен Бо Мартинесом, указывая мне на ссылку на язык, где я должен был искать в первую очередь:

http://www.dcl.hpi.uni-potsdam.de/home/loewis/table-3131.html Похоже, все разрешенные символы выбраны.

7
задан Stefano Palazzo 18 August 2010 в 11:35
поделиться

2 ответа

Согласно справочник по языку , Python 3 допускает использование большого количества символов в качестве идентификаторов.

Этот нулевой символ нижнего индекса выглядит как число, но это не для Python; Python обрабатывает только числами 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9. На самом деле это символ, поэтому вы можете использовать его в качестве идентификатора (как если бы это был, например, греческий символ, такой как Фи).

Важно отметить, насколько легко вы можете вводить эти символы с клавиатуры? Я не хочу, например, вызывать карту персонажей каждый раз, когда мне нужно вызвать ваши функции. Вызов «maximum_decay_rate» или что-то более интуитивное для любого пользователя, а не только специалиста по физике, сделает ваш код более читабельным.

Если вы говорите, что это запрещено, вероятно, это потому, что вы не указали кодировку символов для исходного файла. Его можно указать, указав # - * - coding: utf-8 - * - (или любую другую кодировку) в начале исходного файла.

4
ответ дан 7 December 2019 в 07:38
поделиться

Скажите Python, какая кодировка правильная:

https://www.python.org/dev/peps/pep-0263/

Либо...

# -*- coding: utf-8 -*-

или

# coding=utf-8

Что касается того, какие символы разрешены в именах переменных, обычно ограничиваются алфавитными символами, цифрами и символами подчеркивания.

Подстрочный ноль" на самом деле не является цифрой, это подстрочный знак.

3
ответ дан 7 December 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: