Подтвердить что ты не робот

Насколько различны семантика между Python и JavaScript?

Оба этих языка кажутся мне очень похожими. Хотя Python поддерживает фактические классы вместо того, чтобы быть основанным на прототипах, в классах Python не все отличается от функций, которые генерируют объекты, содержащие значения и функции, так же, как и в JavaScript. С другой стороны, JavaScript поддерживает только числа с плавающей запятой и строки как встроенные типы данных.

Они кажутся довольно незначительными различиями для меня, так что все это в стороне, какие еще более важные различия между ними?

4b9b3361

Ответ 1

  • Классическое наследование в Python, прототипное наследование в ECMAScript
  • ECMAScript - это язык скобок и точек с запятой, в то время как Python - это пробел и отступ/блок
  • Нет var ключевого слова в Python, неявные глобальные переменные в ECMAScript, оба лексически ограничены
  • Закрытие в Python 2.5 и ниже (re: комментарий Alex Martelli) несколько "ограничено", потому что привязки доступны только для чтения, вы не можете обращаться к закрытым переменным, как вы могли бы в ECMAScript
  • В Python нет undefined, исключены исключения
  • Неизменяемые массивы списков в Python (кортежи)
  • Нет switch в Python, но вместо этого вам предлагается использовать словарь таким образом, иногда его удобное назначение свойств lambdas и выполнение их
  • В ECMAScript 3 нет оператора yield или let выражений/операторов или array comprehension - однако они включены в Mozilla JS, который является нестандартным
  • raise vs throw, except vs catch (Python, JS)
  • Собственные строки Unicode в ECMAScript
  • Операторы ключевых слов, такие как and, is и not, используются в Python
  • Python не поддерживает счетчики, такие как i++
  • Python for loop является "умным", поэтому вам не нужно использовать счетчик для перечисления по спискам, и вы не запускаете прототипные свойства, унаследованные от Object.prototype
  • Вам не нужно использовать оператор new в Python для создания объектов
  • Python напечатан в стиле утка

Я украл хорошую информацию из http://hg.toolness.com/python-for-js-programmers/raw-file/tip/PythonForJsProgrammers.html

Ответ 2

Ввод: Javascript и Python динамически типизируются, а javascript - слабо, питон строго типизирован.

Ответ 3

В python "self" явно передается членной функции и не является специальным ключевым словом или чем-то еще. В javascript "this" имеет динамическую область действия. вы можете возиться с областью действия функции-члена, вызывая apply() на нем.

Ответ 4

Будучи разработчиком JavaScript и делал некоторые вещи на Python (благодаря Google App Engine), я бы сказал, что два основных отличия между JavaScript и Python будут

  • Форматирование

    . JavaScript не заботится о внешности вашего кода (подумайте обо всех минимизаторах кода и о том, что получилось в результате)

  • Поддержка Unicode. JavaScript полностью unicode, GAE Python 2.5 не так много (с Latin 1 как набор символов по умолчанию). Поэтому необходимость поддержки нелатинских символов может быть реальной PITA, если вы не уверены, что вы делаете.

Ответ 5

Я добавлю несколько, которых я еще не видел:

  • JavaScript поддерживает объектно-литеральную нотацию. Python не работает точно так же, но словари Python похожи на ассоциативные массивы JavaScript.
  • Объекты/массивы JavaScript поддерживают эту классную функцию, где вам не нужно указывать строки (однословные) при создании новых объектов:

    var foo = {bar: "baz" };

  • Доступ к ассоциативным ключам массива в JavaScript может быть выполнен с использованием точечной нотации, в дополнение к привязным обозначениям. То есть, они одинаковы:

    foo.bar;//возвращает "baz"

    Foo [ "бар" ];//возвращает "baz"

  • Синтаксис анонимной функции Python (lambda) не так гибок, как анонимные функции JavaScript.

  • У Python есть, как, стандартная библиотека и прочее. (И да, я знаю о Rhino et al., Но библиотеки, которые они вам дают, не являются стандартными. Нет стандартного способа читать файл в JavaScript..., о котором я знаю.)
  • Вы можете запустить JavaScript в браузере. Питон... не так много.;)

Ответ 6

В Python пробелы являются частью языка. В Javascript фигурные скобки определяют блоки кода и пробелы игнорируются. Кроме того, Python имеет привязки для Java API,.net и других интересных модных библиотек. Javascript довольно ограничен в отделе библиотеки по сравнению с Python, но в нем есть некоторые аккуратные библиотеки окон и т.д.