千家信息网

Jython怎么用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下Jython怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Jython应用实例一、回显,回显,ec
千家信息网最后更新 2026年11月01日Jython怎么用

小编给大家分享一下Jython怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Jython应用实例一、回显,回显,echo.py!

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

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

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

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

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

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

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

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

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

Jython应用实例二、利用factorial.py进行阶乘!

我们用高速缓存阶乘计算器factorial.py作为类定义的练习,如清单2所示。

清单2. 高速缓存阶乘计算器

class Factorial:      ''' A factorial calculator '''      seen = {} # cache of prior calculated values          def __init__ (self, value):          self.__value = value      def compute (self, value=None):                  ''' calculate the result '''          if value is None: value = self.__value   # default          if   value < 0:          # bad arg!              raise ValueError, 'arg < 0'          elif value < 2:          # base case              return 1L            # insure long integers are used          else:                    # need to calculate              if not value in Factorial.seen.keys():    # not done before?                  # calculate this value and cache it                  Factorial.seen[value] = value * \                       Factorial(value - 1).compute()              return Factorial.seen[value]  # get value from the cache

这里可以看到Jython的许多新特性。首先,用明确的(#)标识引入注释。一个类或者方法可以有文档注释字符串(可以用使用用法类似于JavaDoc的工具进行处理)作为其***行。与赋值不同,语句是用关键字引入的。类和方法正文没有包围在定界符中,而是由缩进的正文来体现。

而且,类是用class语句声明的。def语句引入方法。类特性是用类中的赋值创建的,而实例特性是用构造函数方法__init__中的赋值创建的。seen变量是一个字典。实例是将类对象作为函数调用而创建的。方法是用点(.)运算符调用的。

您还会注意到self变量是方法的接收器(就像Java语言中的this),在方法中,所有对实例特性或者类的方法的引用都必须用self限定。类变量(像在Java语言中一样)是用类名限定的。

函数可以有默认参数,如compute函数的值参数所示。如果没有给出参数值,就使用__value实例特性。

现在,显然可以看出Jython支持Java语言的所有功能,但是有时使用了不同的语法。例如,Jython的raise语句与Java语言的throw语句是相同的。

测试factorial.py

可以用下面的代码测试这个Factorial类,可以在文件factorial.py中找到这些代码(请参阅参考资料):

if __name__ == "__main__":      from sys import argv      if   len(argv) == 1: vals = range(10)      elif len(argv) == 2: vals = range(int(argv[1]))      elif len(argv) == 3: vals = range(int(argv[1]), int(argv[2]))      else: print " Incorrect range"; vals = ()      for i in vals:          print "Factorial(%i)=%i" % (i, Factorial(i).compute())      print "Cache:", Factorial.seen

在Jython中,可以结合类定义和测试用例。上述if __name__……测试使得只有当文件作为命令运行时才运行测试用例代码。还可以用另一个文件引入这个文件,以重复使用Factorial类但不必运行测试用例。测试用例包含几个简单的命令参数处理,然后是一个循环,它计算指定值(如果有的话)的阶乘。***,打印出缓存的值。jython factorial.py 5 10命令生成以下输出:

Factorial(5)=120  Factorial(6)=720  Factorial(7)=5040  Factorial(8)=40320  Factorial(9)=362880  Cache: {9: 362880L, 8: 40320L, 7: 5040L, 6: 720L, 5: 120L, 4: 24L, 3: 6L, 2: 2L}

您可能还注意到上述示例中可以用Jython long(###L)类型计算不定长度整数。

以上是"Jython怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

方法 语句 函数 参数 测试 代码 实例 特性 变量 命令 程序 语言 功能 文件 示例 阶乘 字符 字符串 正文 清单 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 蓝思科技飞鸽互联网 北京路客互联网科技有限公司 科技制造互联网公司 鑫亿盛互联网科技 百单互联网科技有限公司 互联网 视角下的科技创新 万达互联网科技 互联网金融 科技创新 左右互联网络科技 互联网科技股午盘股票涨跌 卫星互联网科技股票 汽车互联网创新科技园 宁夏众和广鑫互联网科技有限公司 互联网科技创新服务 佳云科技和互联网广告 宜昌元轩互联网科技有限公司 允成互联网科技有限公司融资 佛山市翊博互联网络科技有限公司 深圳市罗太互联网科技有限公司 互联网相关科技技术 保险科技 互联网保险 百单网互联网科技有限公司怎么样 博彦科技互联网金融 智能科技公司是互联网公司吗 互联网科技有限公司图片 互联网和高科技公司 科技类公司包括互联网吗 电子商务与互联网科技的关系 皮皮虾互联网科技有限公司 株洲百竞科技的互联网营销顾问
0