Jython

1.安装 Jython 第 3 页(共6 页)


安装 Jython 很简单:只须执行从 Jython 主页下载的类文件即可。假设已安装了 JRE 且已将类文件下载到当前目录中(下面的例子中是 C:\),下列命令将安装 Jython(注意,<java_home> 是安装 JRE 的目录):


C:\><java_home>\bin\java jython-21

请按照安装应用程序的提示执行。建议选择默认值,并选择 c:\Jython-2.1 作为目标目录。

def fac(x):
if x <= 1: return 1
return long(x) * fac(x-1)

if __name__ == "__main__":
print 1 + 2
print "Hello" + "Goodbye"
print fac(3)
print fac(100)



from math import *

print "PI = %f, e = %f" % (pi, e)

print "Sine of %f = %f" % (0.5, sin(0.5))
print "Cosine of %f = %f" % (0.5, cos(0.5))
print "Tangent of %f = %f" % (0.5, tan(0.5))



print "Name: %(last)s, %(first)s" % {'first':"Barry", 'last':"Feigenbaum", 'age':18}



print range(10) # prints [0,1,2,3,4,5,6,7,8,9]
print range(2,20,2) # prints [2,4,6,8,10,12,14,16,18]
print range(10,0,-1) # prints [10,9,8,7,6,5,4,3,2,1]



堆栈和队列


列表支持后进先出 (Last-In/First-Out,LIFO) 堆栈和先进先出 (First-in/First-out,FIFO) 队列概念。使用列表 x 创建堆栈时,用 x.pop()(和等同的 x.pop(-1))删除项。使用列表 x 创建队列时,用 x.pop(0) 删除项。要向列表中添加元素,请使用 x.append(item)。例如:


l = [1,2,3,4,5] # define a list

l.append(6) # l is [1,2,3,4,5,6]

w = l.pop() # w is 6, l is [1,2,3,4,5]
x = l.pop(-1) # x is 5, l is [1,2,3,4]
y = l.pop(0) # y is 1, l is [2,3,4]
z = l.pop(0) # z is 2, l is [3,4]



[b]动态代码求值 [/b]

Jython 与一般的语言不同,它有能力动态创建代码,然后执行。例如,在计算器应用程序中,用户可以用文本形式输入表达式,Jython 可以直接执行该表达式(假设它符合 Jython 源代码规则)。

要较好地了解 Jython 如何对动态代码解释/求值,请考虑下列代码:


v1 = 100; v2 = 200
l1 = [1, 2, v1, v2]
d1 = {"simple":123, "complex":(v1, v2, l1)}
expr = raw_input("Enter an expression:")
print eval(expr) # evaluate and print the expression


下面是使用上述代码进行求值的示例表达式和求值的结果:

输入表达式(作为字符串输入) 结果
'1234.56' 1234.56
'v1+v2' 300
'd1["simple"]' 123
'v1**2 + len(l1)' 10004





[b]Eval、exec 和 execfile[/b]


eval 函数用于执行返回值的表达式。exec 语句用于对不返回值的代码块(一条或多条语句)进行求值,它将文件、字符串(常从文件中读取)或函数作为自己的源操作数。execfile 函数执行来自文件的代码块,它实际上是运行一个子程序。

exec 语句采用下列形式:


exec source {in globals {, locals}}

execfile 和 eval 函数采用下列形式:


execfile(filename, {globals {, locals}})

eval(expression, {globals {, locals}})

所有三种形式都有选择地采用定义全局名称空间和局部名称空间的两个字典。有关名称空间的详细信息,请参见 可见性和作用域。如果省略了这些字典,则使用当前的局部名称空间(由 locals 函数提供)和当前的全局名称空间(由 globals 函数提供)。

例如,如果字典 gd = {"one":1, "two":2} 和 ld = {"x":100, "y":-1} 用作名称空间,则: print eval("one + two * 2 + x + y", gd, ld)

输入结果为:104。

有关使用 eval 函数和 exec 语句的更详细的信息,可以在 Python Library Reference(请参见 参考资料)中获得。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值