Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python和JavaScript之间的语义有多大不同?_Javascript_Python_Semantics - Fatal编程技术网

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

Python和JavaScript之间的语义有多大不同?,javascript,python,semantics,Javascript,Python,Semantics,这两种语言似乎与我极为相似。尽管Python支持实际类而不是基于原型的类,但在Python中,类与生成包含值和函数的对象的函数并没有太大区别,就像在JavaScript中一样。另一方面,JavaScript只支持将浮点数和字符串作为内置数据类型 对我来说,这些差别似乎相当肤浅,所以抛开这些不谈,它们之间还有什么更重要的差别呢?在Python中,空格是语言的一部分。在Javascript中,大括号定义代码块,空格被忽略。此外,Python还为JavaAPI、.net和其他非常棒的库提供了绑定。与P

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


对我来说,这些差别似乎相当肤浅,所以抛开这些不谈,它们之间还有什么更重要的差别呢?

在Python中,空格是语言的一部分。在Javascript中,大括号定义代码块,空格被忽略。此外,Python还为JavaAPI、.net和其他非常棒的库提供了绑定。与Python相比,Javascript在图书馆部门非常有限,但它有一些整洁的窗口库等等。

作为一名Javascript开发人员,我做了一些Python的工作(感谢Google App Engine),我想说Javascript和Python之间的两个主要区别是

  • 格式化。JavaScript不关心代码的外观(想想所有的代码最小化和结果是什么样子的)

  • Unicode支持。JavaScript一直都是unicode,GAE的Python2.5并没有这么多(默认字符集是拉丁文1)。因此,如果你不确定自己在做什么,那么需要支持非拉丁字符可能是一个真正的难题

  • Python中的经典继承,ECMAScript中的原型继承
  • ECMAScript是一种大括号和分号语言,而Python是基于空格和缩进/块的
  • Python中没有
    var
    关键字,ECMAScript中没有隐式全局变量,两者都是词汇范围
  • Python2.5和更低版本中的闭包(re:Alex Martelli的评论)有些“受限”,因为绑定是只读的,不能像在ECMAScript中那样访问私有变量
  • Python中没有未定义的,会抛出异常
  • Python中的不可变列表数组(元组)
  • Python中没有
    switch
    语句,但我们鼓励您以这种方式使用字典,有时它可以方便地将属性分配给lambda并执行它们
  • ECMAScript 3没有
    yield
    语句,也没有
    let
    表达式/语句,也没有
    array comprehension
    s-但是这些都包含在Mozilla的非标准JS中
  • raise
    vs
    throw
    除了
    vs
    catch
    (Python,JS)
  • ECMAScript中的本机Unicode字符串
  • Python中使用了诸如
    不是
    等关键字运算符
  • Python不支持计数器,例如
    i++
  • Python的for循环是“智能”的,所以不需要使用计数器来枚举列表,也不需要运行从
    对象继承的原型属性。prototype
  • 您不必在Python中使用
    new
    操作符来创建对象
  • Python是鸭型的

  • 我从

    键入中窃取了一些信息:Javascript和Python都是动态键入的,而Javascript是弱的,Python是强类型的。

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

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

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

      var foo={bar:“baz”}

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

      foo.bar//返回“baz”

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

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

    • Python有一个标准库之类的东西。(是的,我知道Rhino等人的情况,但是他们提供的库不是标准的。我知道没有标准的方法来读取JavaScript文件。)
    • 您可以在浏览器中运行JavaScript。python没有那么多
    到目前为止,许多回答都提到了
    语法上的
    和一般的形态上的差异,而不是问题中提到的
    语义上的
    差异。Javascript也有java绑定和.net绑定。这取决于你用的是什么口译员。如果你在firefox中编写JAVA脚本,你甚至可以直接调用JAVA并制作swing应用程序。甚至不需要任何特殊特权,除非你想做一些奇怪的事情,比如文件i/o:P,当涉及JavaScript时,我们几乎总是在谈论“IE6”。真的吗?“我们”到底是谁?说这话真奇怪。在任何情况下,如果你想在IE6中使用chrome frame,或者Jscript.NET+silverlightWe,就像大多数JavaScript用户一样,他们必须支持一个完全不同的用户群,而有些用户在锁定的系统中,chrome frame和silverlight根本不可能实现。任何一个有商业顾虑的人几乎总是为最大的共同点而写,而使用JavaScript,这一点就非常低了。这种GCD通常不会在Python中出现。对于#8,实际上Mozilla JavaScript支持所有这些功能。是的,我知道这一点,但我正在快速进行编辑,并决定说一些
    ,以防我不小心添加了Python特有的功能。。。我会更新的。在Py2.6中已过时(
    非本地
    关键字)