Greetings, seeker of knowledge! Today, we're setting forth on a journey to navigate the cosmos of Python. We will focus particularly on Python functions — one of the key elements in the programming universe.
Just as the blender in your kitchen combines various ingredients to serve you a delightful smoothie, functions in programming take in inputs or "arguments", process them, and generate an output. For instance, consider a function in a food delivery app. You input your food choices, the app processes the order, and voilà, you receive the expected time of delivery. Food for thought, isn't it?
Are you ready to start concocting your own Python functions? Let's dive in!
So, how do we create a Python function? It's fairly straightforward, involving several key components: the keyword def
, the name of the function, parentheses ()
, and a colon :
. Take a look:
Python1def hello_world(): 2 print("Hello, World!")
In the function above, hello_world
is the name of the function. Within its body, which is indented to the right, it performs an operation — printing the phrase "Hello, World!". We use or "call" this function by using its name followed by parentheses. Let's give it a try:
Python1def hello_world(): 2 print("Hello, World!") 3 4# Call the function 5hello_world() # Prints: "Hello, World!"
Upon running this script, you will see "Hello, World!" printed on your screen. Voilà! You've just cooked up your first Python function.
Python has a special operator pass
that is used to provide no implementation for the function. This is how it works:
Python1def not_implemented_function(): 2 pass
You ask why? The reason is that if you don't provide this operator, the code won't run:
Python1def not_implemented_function(): 2 # no implementation provided, 'pass' is missed 3 4# The code throws "IndentationError: expected an indented block after function definition on line 1"
So essentially, pass
is used when you already have a function definition but don't have implementation for it yet - without the pass
operator, the code won't run.
Our blender becomes more versatile as we introduce different ingredients, doesn't it? Similarly, to add versatility to our function, we introduce arguments — inputs that our function can transform and combine to produce varied results.
Python1def greet(message): 2 print(message) 3 4# Call the function with "Good Morning!" 5greet("Good Morning!") # Prints: "Good Morning!"
The greet
function above accepts a message
argument and prints it out. When we feed the argument "Good Morning!", it prints exactly that.
Blenders don't merely process the ingredients; they also deliver a smoothie. Similarly, functions can process inputs and return a computed result or output. They accomplish this using the return
keyword.
Python1def add_numbers(num1, num2): 2 result = num1 + num2 3 return result 4 5# Call the function 6total = add_numbers(3, 7) 7print(total) # Prints: 10
Just like a blender, the add_numbers
function combines, or adds, num1
and num2
, and then return
delivers the resulting sum. This returned value is then assigned to the variable named sum
, which is subsequently printed out.
Now, what if we want to blend more than two ingredients? Or, in Python terms, what if we want our function to accept any number of arguments flexibly? You don't have to understand how sum(args)
and len(args)
work for now, just look how it works! We'll cover these built-in functions later in this course.
Python1def calculate_average(*args): 2 """ 3 `sum(args)` returns the sum of all arguments 4 `len(args)` returns the number of arguments 5 """ 6 return sum(args) / len(args) # the average across all arguments 7 8# Call the function with various numbers of arguments 9print(calculate_average(3, 7)) # Prints: 5 ((3 + 7) / 2 = 5) 10print(calculate_average(10, 20, 30, 40)) # Prints: 25 (10 + 20 + 30 + 40) / 4 = 100 / 25 = 4) 11print(calculate_average(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) # Prints: 5.5
The calculate_average
function accepts any number of arguments (*args
) and calculates their average by summing all the values (sum(args)
) and dividing by the total number of values (len(args)
). You can call this function with any number of arguments — a handy trick to have up your sleeve!
Congratulations! We've just journeyed across the Python universe, discovering the magic of Python functions, understanding their uses, and creating our own functions. The insights gleaned from this journey and the practical skills we acquired through learning and using Python functions lay the foundation for exploring more advanced Python functionalities that await us in future voyages.
With this newfound knowledge, it's time to put it all into practice. Brace yourself because, up next, we have a multitude of experiments and exercises I have designed just for you. These are designed to put your skills to the test and polish your command over Python functions. Let's get coding, and may the function force guide you!