📚 node [[python functions]]

Python Functions

Go to the [[Python Week 3 Main Page]] or the [[Python - Main Page]] Also see the [[Programming Main Page]] or the [[Main AI Page]]

Functions are reusable code that take some input and produce some output.

You can make your own, use an inbuilt one, or use some else's.

If you ever need to know more about a function you can call the help() function on it.

help(len)

This will return the docstring associated with the function.

Examples

len() - Returns the length of a collection variable.

sum() - Returns a value representing the addition of each element in a collection variable.

sorted() vs sort() --> function vs method --> A function stands alone while a method belongs to an object. In this case the difference is whether a new list is made or not.

E.g.

sorted_sc_members = sorted(sc_members) <-- A new list is created using the function.

sc_members.sort() <-- No new list is created, but the existing one is sorted.

Making functions

Syntax

A graphic example of python function syntax


# defining the function

def function_name(arguments):
	"""
	docstring: add arguments to internals
	"""
	results = arguments + internals
	return results

# calling the function

>>> function_name(variable)

Or, more pragmatically.


# defining the function

def add1(a):
	"""
	add 1 to a
	"""
	b = a + 1
	return b

# calling the function

>>> add1(5)
>>> 6

Arguments

Multiple arguments:

def multi_arg(arg1, arg2):

No argument:

def no_arg_func():

Return Statements

Return statements return a value from the local scope of the function back to the main scope of the program.

Return some_value <-- This breaks the function and ends it no matter what comes next.

No return statement:

def print_something(arg1)
	print(arg1)

No body to the function:

def placeholder_function():
	pass

Note, if a function without a return statement is required to return something, especially in the case of the pass example, Python3 will return a None.

To make your code easier to read, if you're using a function that does not return anything, explicitly use Return None.

Multiple Return Statements

You can use control flow to use multiple return statements.

def type_of_album(artist, album, year_released):
    
    print(artist, album, year_released)
    if year_released > 1980:
        return "Modern"
    else:
        return "Oldie"
    
x = type_of_album("Michael Jackson", "Thriller", 1980)
print(x)

Functions with a variable number of arguments

You can have functions that will take a variable number of arguments.

Syntax

To ingest the arguments as a tuple-like collection:

def sc_recruit(*members)
	for recruit in members:
		print(recruit, " is now ready for a designation.")
		
>>> sc_recruit("Quinn", "Pip", "Eli", "Greer")
>>> Quinn is now ready for a designation.
>>> Pip is now ready for a designation.
>>> Eli is now ready for a designation.
>>> Greer is now ready for a designation.
>>>
>>> sc_recruit("Luke Medici", "Morgan C Medici")
>>> Luke Medici is now ready for a designation.
>>> Morgan C Medici is now ready for a designation.

Or to ingest the arguments as a dictionary:

def printDictionary(**args):
    for key in args:
        print(key + " : " + args[key])

>>> printDictionary(Country='Canada', Province='Ontario', City='Toronto')
>>>  
>>> Country : Canada
>>> Province : Ontario
>>> City : Toronto

Function Scope

See [[Python Function Scope - Global vs Local]]

Setting a default argument value

If you want an argument to have a default value, use the assignment operator when you declare the arguments and the function.

def isGoodRating(rating=4):

📖 stoas
⥱ context