首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从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(_)

结果有些许不同。

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)。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180303G0878S00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券