直接在源文件中编写Jython代码
创始人
2024-04-16 06:10:24
0

Jython解释器对于快速检查和作提示都很方便,但您不必在这其中完成所有工作 ― Jython 还允许您在源文件中编写代码,并随后运行该代码(虽然使用 Jython 时,编译步骤是可选的)。以下清单是一个独立 Jython程序的示例:

清单 7. 模拟硬币投掷的样本 Jython程序(listing7.py)

  1. from java.util import Random  
  2. rng = Random()  
  3. #This is a comment in Jython  
  4. print "Flipping a coin..." 
  5. if rng.nextBoolean():  
  6.     print "Came up heads" 
  7. else:  
  8.     print "Came up tails" 

在解释如何运行该代码之前,让我们先解释一下代码。这个示例引入了 Jython 中的 if 语句,这是有些人对 Jython(及其先辈 Python)评论的首要方面之一。没有字符定界符标记出当 if 语句条件为真时要执行的代码块(Jython 中的条件不需要括起的圆括号,这与 Java 编程一样)。只是这些代码比周围的代码缩进一层。

Jython代码块总是使用缩进进行标记,而不是使用其它标记,例如花括号。引入代码块的语句(例如 if )以冒号作为结尾。Jython 的这个特性意味着在编写代码时必须小心,因为缩进代码的方式实际上可能会改变代码的含义。例如,清单 8a 产生的打印输出只有数字 3,因为它上面两个语句都属于其条件永远不为真的 if 块:

清单 8a. Jython代码的缩进:只打印“3”

  1. if 0:  
  2.     print "1" 
  3.     print "2" 
  4. print "3" 

如果我只更改其中一行的缩进,那么就会打印数字 2和数字 3:

清单 8b. Jython代码的缩进:打印“2”和“3”

  1. if 0:  
  2.     print "1" 
  3. print "2" 
  4. print "3" 

缩进还必须一致,它必须与将代码组织成块的语句相关联,而且通常它还必须控制代码流。例如:

清单 8c. Jython代码的缩进:语法错误

  1. print "1" 
  2.     print "2" 
  3. print "3" 

这只会产生一个语法错误,因为没有任何控制语句要求将一个块与代码其余部分相分离。

使用缩进标记代码块是 Python 和 Jython 的更有争议的特性之一,但我认为这个问题常常被夸大了。毕竟,如果您遵循有关缩进的良好的编码标准,就不应该有这种问题。如果遵循了良好的编码缩进,那么机器会执行,同行评论家就无话可说,因此事实胜于雄辩。

此外,我知道当开发人员对这种语言使用一段时间后,没有谁会注意这种限制。适当缩进成为 Jython 的第二本性。缩进和语法之间的这种联系当然可能会引起以前未遇到过的错误,但是没有显式的定界符也消除了使用这些定界符的语言中的某些常见错误。

您可以不必编译就可运行 清单 7 中的文件(listing7.py),只需将该文件名作为 jython 命令的参数来调用,如下所示:

清单 9. 不编译就运行“硬币投掷”

  1. $ jython listing7.py  
  2. Flipping a coin...  
  3. Came up tails  

在上个示例中, $ 就是 UNIX shell 提示符,它非常象 Windows 系统上的 C:\> 。您还可以使用 jpythonc 命令将模块编译成 Java 字节码( .class )文件,该命令允许您使用 java 或 jre 命令直接运行它。用这种方法编译的 Jython 模块有一些限制,但这个问题超出了本文的范围。

【编辑推荐】

  1. Jython入门指导:语言特性简介
  2. Jython的字符串操作和函数
  3. 更多的处理:在Jython中解析命令行
  4. 如何将Jython类型转换为Java类型
  5. Jython访问Java属性文件的方法一览

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...