04-Functions
Python Functions
• There are two kinds of functions in Python.
> Built-in functions that are provided as part of Python - raw_input(), type(), float(), int() ...
> Functions that we define ourselves and then use
• We treat the built-in function names as “new” reserved words
(i.e., we avoid them as variable names)
Function Definition
• In Python a function is some reusable code that takes arguments(s) as input, does some computation, and then returns a result or results
• We define a function using the def reserved word
• We call/invoke the function by using the function name, parentheses, and arguments in an expression
Building our Own Functions
• We create a new function using the def keyword followed by optionalparameters in parentheses
• We indent the body of the function
• This defines the function but does not execute the body of the function
def print_lyrics():
print "I'm a lumberjack, and I'm okay."
print 'I sleep all night and I work all day.'
print_lyrics()
Arguments
• An argument is a value we pass into the function as its input when we call the function
• We use arguments so we can direct the function to do different kinds of work when we call it at different times
• We put the arguments in parentheses after the name of the function
Parameters
A parameter is a variable which we use in the function definition. It is a “handle” that allows the code in the function to access the arguments for a particular function invocation.
>>> def greet(lang):
... if lang == 'es':
... print 'Hola'
... elif lang == 'fr':
... print 'Bonjour'
... else:
... print 'Hello'
...
>>> greet('en')
Hello
>>> greet('es')
Hola
>>> greet('fr')
Bonjour
>>>
Return Values
Often a function will take its arguments, do some computation, and return a value to be used as the value of the function call in the calling expression. The return keyword is used for this.
• The return statement ends the function execution and “sends back” the result of the function
def greet():
return "Hello"
print greet(), "Glenn"
print greet(), "Sally"
Multiple Parameters/Arguments
• We can define more than one parameter in the function definition
• We simply add more arguments when we call the function
• We match the number and order of arguments and parameters
def addtwo(a, b):
added = a + b
return added
x = addtwo(3, 5)
print x
8
Optional Parameters
All the optional parameters have to be at the right most side and have the default value.
def addtwo(a, b=5):
added = a + b
return added
Using regular arguments
print(addtwo(1, 2))
3
Using optional argument
print(addtwo(1))
6
Using labelled arguments
print(addtwo(a=1, b=2))
3
Using labelled arguments
print(addtwo(a=1))
6
Using labelled arguments
print(addtwo(b=2))
<TypeError: addtwo() missing 1 required positional argument: 'a'>
Assign function to a variable
Function could be assigned to a variable and then variable is used as function reference and even passed to other function.
def addtwo(a, b):
added = a + b
return added
def funccall(y, a, b):
return y(a,b)
z = addtwo
print(z(1, 2))
3
print(funccall(z, 3, 4))
7
To function or not to function
• Organize your code into “paragraphs” - capture a complete thought and “name it”
• Don’t repeat yourself - make it work once and then reuse it
• If something gets too long or complex, break it up into logical chunks and put those chunks in functions
• Make a library of common stuff that you do over and over - perhaps share this with your friends...