Python和JavaScript之间的语义有何不同?

时间:2009-11-23 22:30:42

标签: javascript python semantics

这两种语言似乎与我非常相似。尽管Python支持实际的类而不是基于原型的类,但Python类与生成包含值和函数的对象的函数没有什么不同,就像在JavaScript中一样。另一方面,JavaScript仅支持浮点数和字符串作为内置数据类型。

这对我来说似乎是相当浅薄的差异,所以除了这些之外,它们之间有什么更重要的区别?

6 个答案:

答案 0 :(得分:33)

  1. Python中的经典继承,ECMAScript中的原型继承
  2. ECMAScript是大括号和分号语言,而Python是基于空格和缩进/块的
  3. Python中没有var关键字,ECMAScript中的隐式全局变量,两者都是词法范围的
  4. Python 2.5及更低版本中的闭包(re:Alex Martelli的评论)有点“限制”,因为绑定是只读的,你不能像在ECMAScript中那样访问私有变量
  5. Python中没有undefined,抛出异常
  6. Python(元组)中的不可变列表数组
  7. Python中没有switch语句,但我们鼓励您以这种方式使用字典,有时它方便地为lambda指定属性并执行它们
  8. ECMAScript 3没有yield语句,也没有let表达式/语句,也没有array comprehension - 但是这些都包含在Mozilla的非标准JS中
  9. raise vs throwexcept vs catch(Python,JS)
  10. ECMAScript中的原生Unicode字符串
  11. 在Python中使用
  12. 关键字运算符,例如andisnot
  13. Python不支持i++
  14. 等计数器
  15. Python的for循环是“智能的”,因此您不需要使用计数器来枚举列表,也不会遇到从Object.prototype继承的原型属性
  16. 您不必在Python中使用new运算符来创建对象
  17. Python是鸭子型的
  18. 我从http://hg.toolness.com/python-for-js-programmers/raw-file/tip/PythonForJsProgrammers.html

    中偷了一大堆信息

答案 1 :(得分:6)

键入:Javascript和Python都是动态类型,而javascript是,python 强烈类型。

答案 2 :(得分:5)

在python中,“self”显式传递给成员函数,并不是特殊的关键字或任何东西。 在javascript中,“this”是动态范围的。你可以通过调用apply()来调整成员函数的范围。

答案 3 :(得分:5)

我将添加一些我还没有看到的提及:

  • JavaScript支持对象 - 文字表示法。 Python的工作方式并不完全相同,但Python字典与JavaScript关联数组类似。
  • JavaScript对象/数组支持这种很酷的功能,在创建新对象时不需要引用(单字)字符串:

    var foo = {bar:“baz”};

  • 除了括号表示法之外,可以使用点表示法来访问JavaScript中的关联数组键。也就是说,这些是相同的:

    foo.bar; //返回“baz”

    FOO [ “酒吧”]; //返回“baz”

  • Python的匿名函数(lambda)语法不如JavaScript的匿名函数灵活。

  • Python有一个标准的库和东西。 (是的,我知道Rhino等人,但他们给你的库不是标准。没有标准化的方法来读取JavaScript中的文件......我知道。)
  • 您可以在浏览器中运行JavaScript。 Python ......不是那么多。 ;)

答案 4 :(得分:2)

作为一名JavaScript开发人员并完成了一些Python工作(感谢Google App Engine)我会说JavaScript和Python之间的两个主要区别是

  • 格式。 JavaScript并不关心代码的外观(考虑所有代码最小化器以及结果如何)

  • Unicode支持。 JavaScript一直是unicode,GAE的Python 2.5并没有那么多(将Latin 1作为默认字符集)。因此,如果您不确定自己在做什么,那么需要支持非拉丁字符可能是真正的PITA。

答案 5 :(得分:1)

在Python中,空白是语言的一部分。在Javascript中,大括号定义代码块,并忽略空格。此外,Python还具有Java API,.net和其他酷炫图书馆的绑定。与Python相比,Javascript在库部门中相当有限,但它有一些简洁的窗口库等。