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

Ste*_*eve 24 javascript python semantics

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

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

med*_*iev 34

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

我从http://hg.toolness.com/python-for-js-programmers/raw-file/tip/PythonForJsProgrammers.html窃取了大量信息.

  • Python有本机unicode字符串和递增(只拼写"+ = 1"而不是"++").您也可以在JS中使用duck-typing. (3认同)

mik*_*iku 6

键入:Javascript和Python都是动态类型,而javascript是弱的,python 类型.


Jim*_*mmy 5

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


Jef*_*eff 5

我将添加一些尚未提及的内容:

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

    var foo = {bar:“ baz”};

  • 除了括号符号外,还可以使用点符号来访问JavaScript中的关联数组键。也就是说,它们是相同的:

    foo.bar; //返回“ baz”

    foo [“ bar”]; //返回“ baz”

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

  • Python具有标准库和类似的东西。(是的,我知道Rhino等人,但是它们给您的库不是标准的。据我所知,还没有标准化的方法来读取JavaScript文件。)
  • 您可以在浏览器中运行JavaScript。Python ...不是很多。;)