从Scala和Python的“shell”说起

Posted 鸿的学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Scala和Python的“shell”说起相关的知识,希望对你有一定的参考价值。

       在《写给Python和Scala的碎碎念》的系列的开篇,让我们从最简单的交互式“shell”开始,一步步来看看Python和Scala的对于同一件事体现出来的设计理念。
· 使用Scala解释器
      Scala和Python都可以在shell页面输入scala或者python进入交互页面 。Scala作为一门静态语言,拥有着属于自己的“shell”,可以让你快速的检验一小段Scala代码。Python也拥有着自己的“shell”,使用方式和Scala一样,不同的就是Python还拥有着IPython这样强化过的“shell”。

       来试试“shell”带来的方便吧!首先在“shell”里分别输入1+1
scala:
scala> 1+1
res0: Int = 2

scala> res0
res1: Int = 2


python:
>>> 1+1
2
>>> _
2
>>> type(_)
<class 'int'>


   结果有些许不同。
   1.在Scala里,一共是输出了一个自动生成的或者是用户自定义的变量名res0,指向计算的结果值,而Python则隐性的使用了单下划线_来指向计算的结果值。由于Scala也是一门纯粹的函数式编程语言,所以如果我们接着输入res0,便会重新使用变量res1,Python则不一样,会重新赋值给_。

   2.Scala在结果值里存在了一个冒号和等号,而冒号后面指明了表达式的结果类型Int,这反映了Scala一个特性,那就是类型推断,Python作为一门动态语言,它无需预定义数据类型,在运行时检查数据类型,我们可以通过type(_)发现,它也被自动推断为int了。
   3.同样的Scala和Python都输出了结果2。

      如果再深入的看看,Scala里的Int和Python的int实际上都是一个类,不同的是Scala的Int是因为Scala提供一个独特的信息隐藏机制,把原本应该写为Scala.Int的简化成了Int(这样的机制应用在Scala绝大部分的数据类型上,比如Boolean),其对应的就是Java的基本类型,而Python的int则是C语言的一个结构体,采用的是long类型,有一些常用的数(工程意义上)在解释器启动之时便实例化后存在缓冲池里(-5到256)。

以上是关于从Scala和Python的“shell”说起的主要内容,如果未能解决你的问题,请参考以下文章

从Python中访问mysql-py shell命令

python--Django从创建一个项目说起

python基础篇10-py2和py3编码

从shell脚本中的EOF说起

从 Scala Spark 代码调用 Pyspark 脚本

python2和python3编码解码详解