在代码中深入学习Jython语法

开发 后端
本文通过几个简单的程序介绍Jython语法,帮助您更深入了解Jython语法和结构。

为了更多的了解Jython语法和结构,下面通过分析几个简单然而完整的工作程序进行学习。首先是经典的示例程序——Hello World!——它在Jython中如下所示:

清单 1. Jython的Hello World!

  1. print "Hello World!" 

在Jython语法中(就像在Python 中),源文件使用扩展名“ py”。“Hello World”语句放在 hello.py 之类的源文件中时,就是一个完整的程序。

作为比较,看一下等效的Java 程序,看看下面的hello.java 文件:

清单 2. Java的Hello World!

  1. public class hello {  
  2.     public static void main(String[] args) {  
  3.         System.out.println("Hello World!");  
  4.     }  

Jython语法显然格式更简单,通常都是如此。Jython语法好的方面当然是代码可以直接解释,也可以翻译成Java 源代码并自动编译为类文件。可以用下面的Java 命令来运行Hello World 程序:

  1. C:\>java -Dpython.home=C:\jython-2.1 -cp C:\jython-2.1\jython.jar   
  2.       org.python.util.jython hello.py 

也可以用下面更方便的Jython 脚本运行这个程序:

  1. C:\>jython hello.py 

回显,回显,echo.py!

然后,尝试一个增加了一些功能的示例,这是一个小程序,它允许您回显(echo)命令行参数。对于程序echo,使用以下代码(这些代码在echo.py 中):

清单 3. 回显命令行参数的示例程序

  1. import sys  
  2. count = 1 
  3. for arg in sys.argv[1:]:  
  4.     print 'Argument %i=%s' % (count, arg)  
  5.     count += 1 

同样,这个完整的Jython程序揭示了Jython语法的一些关键特性。要注意的***件事是每一行就是一个语句——不需要分号(;)来结束这些行——并且变量没有声明。

您还应当注意在Jython语法中,命令行参数是通过内置符号sys.argv 访问的,它是一系列字符串。sys是一个标准模块,它包含有用的值和函数,还有其他许多标准模块可供使用。***个argv 元素(0 )是程序名(即echo.py)。要跳过它,取走argv 列表的片段,实际开始位置为一(1),然后迭代直到列表的***。

另外,在Jython语法中,循环是通过 for 语句组实现的。 for 语句正文是 for 之后缩进的那些行。print 语句示范了使用Jython 的字符串格式编排功能(类似于 C/C++ 的 printf 和 Java 1.5 的新的 print 功能)。

还可以更精确地将上述代码写为以下形式:

  1. from sys import argv  
  2. for i in range(1, len(argv)): print 'Argument %i=%s' % (i, argv[i]) 

在这个示例中,使用range 以索引sys.argv 列表。因为 argv 变量是直接导入的,所以不需要限定。注意argv 列表的长度是通过len 函数而不是作为方法获得的,这是Jython语法中的一种用法,在许多语言中也常见。还有许多其他函数可用。

【编辑推荐】

  1. 在Eclipse下配置Jython的简易流程
  2. 使用Jython脚本管理WebSphere资源
  3. 如何在Java中调用Jython
  4. 略谈Jython语言:什么是Jython?
  5. 用于连接多个数据库的Jython安装
责任编辑:佚名 来源: IBM中国
相关推荐

2010-10-09 10:10:55

JavaScriptFunction对象

2010-09-07 10:57:34

CSS伪类

2010-09-08 13:14:03

CSS滤镜

2010-09-14 17:20:03

CSS DIV相对定位

2009-11-17 14:13:34

PHP配置

2015-09-29 08:57:46

javascript对象

2010-09-01 08:58:58

2010-08-25 11:05:03

CSSpaddingmargin

2010-04-08 16:49:36

Unix操作系统

2010-06-29 15:29:22

UML建模流程

2015-09-29 09:27:04

JavaScript对象

2010-09-28 09:22:34

DOM模型Html

2020-03-23 14:15:51

RadonDB安装数据库

2010-08-31 13:06:45

CSS

2010-08-19 12:55:55

CSSMarginPadding

2010-08-26 09:58:01

CSS clear

2010-09-28 14:35:34

DOM遍历

2010-09-06 11:26:18

CSS伪类

2024-01-03 10:15:59

Python函数

2010-08-11 09:29:25

FlexJava数据模型
点赞
收藏

51CTO技术栈公众号