functions.org
author Puneeth Chaganti <punchagan@gmail.com>
Mon, 26 Apr 2010 18:13:30 +0530
changeset 110 c1099ad60539
child 113 6388eacf7502
permissions -rw-r--r--
Added functions org file.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
110
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     1
* Functions
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     2
*** Outline
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     3
***** Functions
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     4
******* review of what's been done in solving equations tutorial
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     5
********* def
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     6
********* name
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     7
********* arguments
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     8
********* indented block
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     9
********* calling a function
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    10
******* arguments are local to a function
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    11
******* return values
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    12
******* doc strings - with example.
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    13
******* code reading exercises?
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    14
******* default arguments
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    15
******* keyword arguments
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    16
******* availability library functions
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    17
*** Script
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    18
    Welcome friends. 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    19
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    20
    In this tutorial we shall be looking at Functions. We already have
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    21
    looked at the basics of functions in the tutorial on solving
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    22
    equations. We shall first review these basics. Next we shall look
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    23
    at other details like doc-strings, default arguments and keyword
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    24
    arguments. 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    25
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    26
    Let's write a simple function that prints a Hello message, after
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    27
    accepting a name. 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    28
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    29
        def welcome(name):
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    30
	    print "Hello", name 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    31
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    32
    You would recall that def is a keyword that indicates a function
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    33
    definition. 'welcome' is the name of the function and 'name' is
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    34
    the lone argument to the function. Note that the function is
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    35
    defined within an indented block, similar to any other block. Our
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    36
    function welcome just has one line in it's definition.  
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    37
    
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    38
    We can call our function by passing, as follows -
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    39
        welcome("World")
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    40
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    41
    (arguments are local to a function)
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    42
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    43
    In general functions should be accompanied by documentation on how
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    44
    to use it. Python provides a convenient way of writing within the
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    45
    function itself, using doc strings. They were mentioned in the
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    46
    tutorial on strings. Let's look at how to write them here. 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    47
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    48
    Let us add a simple doc string to our welcome function. 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    49
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    50
        def welcome(name):
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    51
	    """ Prints a hello message to a person, given a name. """
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    52
	    print "Hello", name 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    53
    
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    54
    Notice that the doc string uses triple quotes. If the doc-string
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    55
    exceeded one line, we could have used new line characters in
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    56
    it. Also, as expected the doc-string is indented as is required
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    57
    for anything within a block. 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    58
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    59
    We shall now look at default arguments. 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    60
    [show slide with examples of functions with default arguments]
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    61
    The strip function has been used in two different ways in the
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    62
    previous tutorials - one for splitting on spaces and the other for
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    63
    splitting on commas. 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    64
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    65
    The function split is being called with no arguments and one
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    66
    argument, respectively. In the first case, white space is being
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    67
    used as a default value. Let's now edit our function, welcome, to
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    68
    use default values. (For convenience, we have dropped the doc-string)
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    69
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    70
        def welcome(name="World!"):
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    71
	    print "Hello", name 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    72
    
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    73
    Now, we call the function 'welcome' without passing any arguments
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    74
    to it. 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    75
        welcome()
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    76
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    77
    "World!" is used as a default argument, when no name argument is
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    78
    passed to 'welcome'. 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    79
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    80
    Let's now look at the use of keyword arguments. 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    81
    [show slide with examples of functions with keyword arguments]
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    82
    We have already looked at functions and keyword arguments in these
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    83
    examples. loc, linewidth, xy, labels are all keywords. 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    84
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    85
    Let's now see, how we can call our function 'welcome', using
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    86
    keyword arguments. We can call the function in a variety of ways.
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    87
        welcome("Hello", "James")
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    88
	welcome("Hi", name="Guido")
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    89
	welcome(name="Guido", greet="Hello")
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    90
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    91
    Keyword arguments allow us to call functions by passing arguments
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    92
    in any order and removes need to remember the order of arguments
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    93
    in the function definition. 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    94
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    95
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    96
***** return values
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    97
***** arguments are local to a function
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    98
***** availability library functions
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    99
***** code reading exercises?
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   100
  
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   101
    We come to the end of this tutorial on functions. In this tutorial
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   102
    we have learnt about functions in a greater detail. We looked at
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   103
    how to define functions, calling them, default and keyword
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   104
    arguments. 
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   105
c1099ad60539 Added functions org file.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   106
*** Notes