Python и JavaScript — языки с динамической типизацией. Переменные не имеют типов, но их значения — имеют. Преобразование типов данных (явное и неявное) может привести к различным сюрпризам, особенно если вы переходите с Python на JavaScript.
Python | Javascript |
---|---|
Преобразование чисел и строк # | |
Exception: TypeError can only concatenate str (not "int") to str
'32323232323232' |
327
25
224
4.571428571428571 |
Неявное преобразование списка в строку # | |
[1, 2, 10, 5, 3] |
1,2,105,3
[ 1, 2, 10, 5, 3 ] |
Сравнение и приведение типов # | |
a is not equal to b str(a) is equal to str(b) int(a) is equal to int(b) |
a is equal to b (coercions allowed) Number(a) is equal to Number(b) String(a) is equal to String(b) |
Особые случаи в сравнении # | |
False
False
False
False |
true
true
true
true |
Сравнение списков / массивов # | |
True
True
False
True Списки сравниваются поэлементно. Если вы хотите убедиться, что
две переменные указывают на один и тот же список, а не просто на
списки, совпадающие поэлементно, необходимо использовать
оператор |
false
false
true
true
true
false Если оба аргумента оператора сравнения ( |
Числовые типы # | |
<class 'int'>
<class 'float'>
True
False
Exception: TypeError list indices must be integers or slices, not float Python различает целые числа ( |
number
number
true
true
20 В JavaScript целые числа и числа с плавающей запятой не различаются. (На самом деле, все числа являются числами с плавающей запятой.) |
Ой. Что это, Бэрримор? А вот что: если оператор
+
видит что-то, что он не может сложить (то есть не два числа), то он превращает все свои аргументы в строки и дальше их конкатенирует (как строки).