(←) предыдущая запись ; следующая запись (→)

Проблема с этими символами в том, что они гхм… невидимые. В большинстве текстовых редакторов вы даже не поймёте, что в ваш текст затесался такой значок. Меж тем, как мы уже видели на примере математических объединителей, эти символы могут влиять на смысл написанного.

Ещё хуже ситуация оказалась с монгольским разделителем гласных. Он с одной стороны невидимый, а с другой стороны, неясно, считать ли его пробельным символом. В разных стандартах юникода он трактовался по-разному. И это создавало возможность делать программы, которые по-разному будут интерпретироваться в разных версиях компилятора.

Посмотрите на программу. Здесь знак X поставлен вместо того монгольского разделителя:

variable = 13
variableX = 666
print(variable)

Что будет напечатано? Это зависит от того, является ли X частью имени переменной или трактуется как ещё один, пусть и нестандартный, пробел перед знаком равно. Что бы не было напечатано, это точно будет сатанизм какой-то, потому что на мониторе это будет выглядеть так:

variable = 13
variable᠎ = 666
print(variable)

и печатать будет где-то 13, где-то 666, а где-то выдаст синтаксическую ошибку.

(5/7)