Skip to main content

37. Defining and Calling Functions

1. Introduction​

A function is a reusable block of code that performs a specific task. Functions improve modularity and reduce repetition.


2. Defining a Simple Function​

def greet():
print("Hello, world!")

3. Calling a Function​

greet()  # Output: Hello, world!

4. Functions with Parameters​

def greet(name):
print("Hello,", name)

greet("Alice")

5. Returning Values​

def add(a, b):
return a + b

result = add(2, 3)
print(result) # 5

6. Multiple Return Values (Tuples)​

def min_and_max(values):
return min(values), max(values)

low, high = min_and_max([1, 2, 3])
print(low, high) # 1 3

7. Docstrings and Function Help​

def square(x):
"Return square of x."
return x * x

help(square) # shows docstring

8. Pure Functions vs Side Effects​

  • Pure function: same input → same output, no side effects.
  • Side effect: writing to file, modifying global variables, etc. Prefer pure functions when possible.

9. Best Practices​

  • Use descriptive function names.
  • Keep functions short and focused (single responsibility).
  • Write docstrings for public functions.

10. Next Steps​

✅ You now know how to define and call functions.
Next chapter: Function arguments and return values.