Jython

 

+

Search Tips   |   Advanced Search

 

 

Overview

Jython is an alternate implementation of Python, and is written entirely in Java.

The wsadmin tool uses Jython V2.1.

 

Basic function

The function is either the name of a built-in function or a Jython function. For example

print "Hello, World!"
=> Hello, World!

import sys
sys.stdout.write("Hello World!\n")
=> Hello World!

In the example, print identifies the standard output stream. Use the built-in module by running import statements such as the previous example. The statement import runs the code in a module as part of the importing and returns the module object. sys is a built-in module of the Python language. In the Python language, modules are name spaces which are places where names are created. Names that reside in modules are called attributes. Modules correspond to files and the Python language creates a module object to contain all the names defined in the file. In other words, modules are name spaces.

 

Variable

To assign objects to names, the target of an assignment should be on the left side of an equal sign (=) and the object that you are assigning on the right side. The target on the left side can be a name or object component, and the object on the right side can be an arbitrary expression that computes an object. The following rules exist for assigning objects to names:

  • Assignments create object references.

  • Names are created when you assign them.

  • You must assign a name before referencing it.

Variable name rules are similar to the rules for the C language, for example:

  • An underscore character (_) or a letter plus any number of letters, digits or underscores

The following reserved words can not be used for variable names

and     assert     break    class    continue
def     del        elif     else     except
exec    finally    for      from     global
if      importin   is       lambda
not     or         pass     print    raise  
return  try        while

For example

a  = 5
print a
=> 5

b =  a
print b
=> 5

text1, text2, text3, text4  = 'good', 'bad', 'pretty', 'ugly'
print text3
=> pretty

The second example assigns the value of variable a to variable b.

 

Types and operators

The following list contains a few of the built-in object types:

  • Numbers. For example

    8, 3.133,  999L,  3+4j
    
    num1 = int(10)
    print num1
    => 10
    

  • Strings. For example

    'name',  "name's", ''
    
    print str(12345)
    => '12345'
    

  • Lists. For example

    x = [1, [2,  'free'], 5]
    y = [0, 1, 2, 3]
    y.append(5)
    print y
    => [0, 1, 2, 3, 5]
    
    y.reverse()
    print y
    => [5, 3, 2, 1, 0]
    
    y.sort()
    print y
    => [0, 1, 2, 3, 5]
    
    print list("apple")
    => ['a', 'p', 'p', 'l', 'e']
    
    print list((1,2,3,4,5))
    => [1, 2, 3, 4, 5]
    
    test = "This is a test"
    test.index("test")
    => 10
    
    test.index('s')
    => 3
    

The following list contains a few of the operators:

  • x or y

    y is evaluated only if x is false. For example:

    print 0 or 1
    => 1
    

  • x and y

    y is evaluated only if x is true. For example:

    print 0 and 1
    =>  0
    

  • x +y , x - y

    Addition and concatenation, subtraction. For example:

    print  6 + 7
    => 13
    
    text1 = 'Something'
    text2 = ' else'
    print text1 + text2
    => Something else
    
    list1 = [0, 1, 2, 3]
    list2 = [4, 5, 6, 7]
    print list1 + list2
    => [0, 1, 2, 3, 4, 5, 6, 7]
    
    print  10 - 5
    => 5
    

  • x * y, x / y, x % y

    Multiplication and repetition, division, remainder and format. For example:

    print 5 * 6
    => 30
    
    print 'test' * 3
    => test test test
    
    print 30 / 6
    => 5
    
    print 32 % 6
    => 2
    

  • x[i], x[i:j], x(...)

    Indexing, slicing, function calls. For example:

    test = "This is a test"
    print  test[3]
    => s 
    
    print test[3:10]
    => s is a
    
    print test[5:]
    => is a test
    
    print x[:-4]
    => This is a print len(test)
    => 14
    

  • <, <=, >, >=, ==, <>, !=, is is not

    Comparison operators, identity tests. For example:

    l1 = [1, ('a', 3)]
    l2 = [1, ('a', 2)]
    l1 < l2, l1 == l2, l1 > l2, l1 <> l2, l1 != l2, l1 is l2, l1 is not l2
    => (0, 0, 1, 1, 1, 0, 1)
    

 

Backslash substitution

If a statement needs to span multiple lines, one can also add a black slash (\) at the end of the previous line to indicate you are continuing on the next line. For example

text =  "This is a tests of a long lines" \
" continuing lines here."
print text
=> This is a tests of a long lines continuing lines here.

 

Functions and scope

Jython uses the def statement to define functions. Functions related statements include:

  • def, return

    The def statement creates a function object and assigns it to a name. The return statement sends a result object back to the caller. This is optional, and if it is not present, a function exits so that control flow falls off the end of the function body.

  • global

    The global statement declares module-level variables that are to be assigned. By default, all names assigned in a function are local to that function and exist only while the function runs. To assign a name in the enclosing module, list functions in a global statement.

The basic syntax to define a function is the following

def name (arg1, arg2, ... ArgN):
statements
return value

where name is the name of the function being defined. It is followed by an open parenthesis, a close parenthesis and a colon. The arguments inside parenthesis include a list of parameters to the procedures. The next line after the colon is the body of the function. A group of commands that form the body of the function. After you define a Jython function, it is used just like any of the built-in functions. For example

def  intersect(seq1, seq2):
  try:
     res = []
     for x in seq1:
       if x in seq2:
          res.append(x)
     return res
  except:

To call the function above, use the following command

s1 = "SPAM"
s2 = "SCAM"
intersect(s1, s2)
=> [S, A, M]

intersect([1,2,3], (1.4)) 
=> [1]

 

Comments

Make comments in the Jython language with the pound character (#).

 

Command line arguments

The Jython shells pass the command line arguments to the script as the value of the sys.argv. The name of the program, or script, is not part of sys.argv. sys.argv is an array, so you use the index command to extract items from the argument list, for example

import sys
first  =  sys.argv[0]
second  = sys.argv[1]
arglen = len(sys.argv)

 

Basic statements

There are two looping statements: while and for. The conditional statement is if. The error handling statement is try. Finally, there are some statements to fine-tune control flow: break, continue and pass. The following is a list of syntax rules in Python:

  • Statements run one after another until you say otherwise. Statements normally end at the end of the line they appear on. When statements are too long to fit on a single line one can also add a back sash (\) at the end of the prior line to indicate you are continuing on the next line.

  • Block and statement boundaries are detected automatically. There are no braces, or begin or end delimiter, around blocks of code. Instead, the Python language uses the indentation of statements under a header in order to group the statements in a nested block. Block boundaries are detected by line indentation. All statements indented the same distance to the right belong to the same block of code until that block is ended by a line less indented.

  • Compound statements = header; ':', indented statements. All compound statements in the Python language follow the same pattern: a header line terminated with a colon, followed by one or more nested statements indented under the header. The indented statements are called a block.

  • Spaces and comments are usually ignored. Spaces inside statements and expressions are almost always ignored (except in string constants and indentation), so are comments.

 

If

The if statement selects actions to perform. The if statement may contain other statements, including other if statements. The if statement can be followed by one or more optional elif statements and ends with an optional else block.

The general format of an if looks like the following

if test1
  statements1
elif test2
  statements2
else test3
  statements3

For example

weather = 'sunny'
if weather == 'sunny':
  print "Nice weather"
elif weather == 'raining':
  print "Bad weather"
else:
  print "Uncertain, don't plan anything"

 

While

The while statement consists of a header line with a test expression, a body of one or more indented statements, and an optional else statement that runs if control exits the loop without running into a break statement. The while statement repeatedly executes a block of indented statements as long as a test at the top keeps evaluating a true value. The general format of an while looks like the following

while test1
  statements1
else
  statements2
For example

a = 0; b = 10
while a < b:
  print a
  a = a + 1

 

For

The for statement begins with a header line that specifies an assignment target or targets, along with an object you want to step through. The header is followed by a block of indented statements which you want to repeat.

The general format of a for statement looks like the following

for target in object:
  statements
else:
  statements

It assigns items in the sequence object to the target, one by one, and runs the loop body for each. The loop body typically uses the assignment target to refer to the current item in the sequence as if it were a cursor stepping through the sequence. For example

sum = 0
for x in [1, 2, 3, 4]:
   sum = sum + x

 

Break, continue, and pass

We can control loops with the break, continue and pass statements. The break statement jumps out of the closest enclosing loop (past the entire loop statement). The continue statements jumps to the top of the closest enclosing loop (to the header line of the loop), and the pass statement is an empty statement placeholder.

 

Try

A statement will raise an error if it is called with the wrong number of arguments, or if it detects some error condition particular to its implementation. An uncaught error aborts execution of a script. The try statement is used to trap such errors. Python try statements come in two flavors, one that handles exceptions and one that executes finalization code whether exceptions occur or not. The try, except, else statement starts with a try header line followed by a block of indented statements, then one or more optional except clauses that name exceptions to be caught, and an optional else clause at the end. The try, finally statements starts with a try header line followed by a block of indented statements, then finally clause that always runs on the way out whether an exception occurred while the try block was running or not.

The general format of the try, except, else function looks like the following

try:
  statements
except name:
  statements
except name, data:
  statements
else
  statements

For example

try:
   myfunction()
except:
   import sys
   print 'uncaught exception', sys.exc_type, sys.exc_value

try:
   myfilereader()
except EOFError:
   break
else:
   process next line here

The general format of a try and finally looks like the following

try:
  statements
finally:
  statements

For example

def divide(x, y):
   return x / y

def tester(y):
   try:
        print divide(8, y)
   finally:
      print 'on the way out...'

For more information about the Jython language, see the Scripting: Resources for Learning article.


 

See Also

Jacl

 

Related Tasks

Getting started with scripting

 

See Also

Scripting: Resources for learning