• Python

Command Palette

Search for a command to run...

Python Fundamentals
  • Python Variables
  • Python Operators
  • Python Input-Output
  • Python Type Conversion
Python Data Types
  • Python Strings
  • Python List
  • Python Tuple
  • Python Dictionnaries
  • Python Sets
Python Flow Control
  • Python Conditions
  • Python For Loop
  • Python While Loop
  • Python Break and Continue
Python Functions
  • Python Functions
  • Python Arguments
  • Python Functions Scope
  • Python Recursion
Python Classes
  • Python Classes
  • Python Classes and Static Methods
  • Python Properties
  • Python Decorators
  • Python Error Handling

Create an Account

FREE

Join our community to access more courses.

Create Account

On this page

Organizing Code: Understanding FunctionsDefining a FunctionCalling a FunctionFunction Parameters (Introduction)Returning ValuesLambda FunctionsSummary
      • Pricing
      • Blog

      Python Functions

      Organizing Code: Understanding Functions

      In programming, we often need to perform the same set of actions multiple times throughout our program. Typing out the same code block repeatedly is inefficient, makes the code harder to read, and is a nightmare to update if you need to change something.

      Functions solve this problem. A function is a block of organized, reusable code that is used to perform a single, related action.

      Using functions makes your code:

      • Reusable: Write once, use many times.
      • Organized: Break down complex tasks into smaller, manageable parts.
      • Readable: Code becomes easier to understand because complex logic is hidden inside function calls with descriptive names.
      • Maintainable: If you need to change the logic of a task, you only need to update the code in one place (inside the function).

      Defining a Function

      To create your own function in Python, you use the def keyword, followed by a function name, parentheses (), and a colon :. The code block that the function executes must be indented below the def line.

      def greet():
          print("Hello, world!")
      
      • def: Marks the start of a function definition.
      • greet: The name of the function. Choose descriptive names that indicate what the function does (e.g., calculate_total, send_email, format_name). Function names usually follow snake_case convention (lowercase words separated by underscores).
      • (): These parentheses are necessary, even if the function doesn't take any input. They might contain parameters later.
      • :: Ends the function header line.
      • Indented Block: The code to be executed when the function is called. Indentation is crucial in Python to define the function's body.

      Calling a Function

      Defining a function only creates it; it doesn't run the code inside. To execute the function's code, you must call the function. You do this by typing the function's name followed by the parentheses ().

      # Define the function
      def say_hello():
          print("Hello from the function!")
      
      # Call the function to execute its code
      say_hello()
      say_hello() # You can call it multiple times
      

      Output:

      Hello from the function!
      Hello from the function!
      

      Function Parameters (Introduction)

      Functions can receive information from the outside world to make them more dynamic. This information is passed via parameters defined in the parentheses during the function definition.

      def greet_person(name): # 'name' is a parameter
          print(f"Hello, {name}!")
      

      When you call this function, you provide a value inside the parentheses. This value is called an argument, and it gets assigned to the corresponding parameter inside the function.

      greet_person("Alice") # "Alice" is an argument
      greet_person("Bob")   # "Bob" is another argument
      

      Output:

      Hello, Alice!
      Hello, Bob!
      

      There are different ways to define parameters and pass arguments (like positional arguments, keyword arguments, default values, and variable-length arguments). We will cover these in detail in a separate article dedicated to Python Function Arguments.

      Returning Values

      Sometimes, a function doesn't just perform an action (like printing); it calculates or processes something and needs to send a result back to the part of the code that called it. This is done using the return keyword.

      The return statement exits the function and hands back a value to the caller.

      def add(a, b):
          result = a + b
          return result # Return the calculated sum
      
      # Call the function and store the returned value in a variable
      sum_result = add(5, 3)
      print(sum_result) # Output: 8
      
      print(add(10, 2)) # Output: 12 (The function call itself evaluates to the returned value)
      
      • A function can contain multiple return statements, but it will stop executing as soon as the first one is encountered.
      • If a function finishes executing without hitting a return statement, or if it has a return statement without a value (return), it implicitly returns the special value None.
      def do_nothing():
          pass # This function does nothing and has no return
      
      return_value = do_nothing()
      print(return_value) # Output: None
      

      Lambda Functions

      A lambda function (also called an anonymous function) is a small function defined without a name using the lambda keyword. Lambda functions can have any number of arguments but can only have one expression. The expression is evaluated, and its result is implicitly returned.

      They are typically used for short operations where a full def function is overkill, especially when you need a function for a short period or as an argument to another function (like map(), filter(), or sorted()).

      # Syntax: lambda arguments: expression
      
      # A lambda function that squares a number
      square = lambda x: x ** 2
      
      print(square(5)) # Output: 25
      
      # A lambda function with multiple arguments
      add_lambda = lambda a, b: a + b
      
      print(add_lambda(10, 5)) # Output: 15
      
      # Example using lambda with sorted()
      points = [(1, 2), (3, -1), (0, 5), (2, 0)]
      # Sort points based on the sum of their coordinates
      points_sorted = sorted(points, key=lambda point: point[0] + point[1])
      print(points_sorted) # Output: [(2, 0), (3, -1), (1, 2), (0, 5)]
      

      Lambda functions are concise but less readable than regular functions for complex logic, so use them judiciously.

      Summary

      • Functions are reusable blocks of code defined using the def keyword.
      • They help organize your program and make it easier to read and maintain.
      • You call a function using its name followed by parentheses ().
      • Functions can accept input through parameters.
      • The return statement sends a value back from the function.
      • Functions without an explicit return or with an empty return return None.
      • Lambda functions are small, anonymous functions for single expressions.

      Mastering functions is a crucial step in writing clean, modular, and efficient Python code.

      Continue Learning

      Python Variables

      Popular

      Getting Started: Understanding Variables in Python In programming, we often need to store informatio

      Python Sets

      For You

      Working with Unique Items: Understanding Sets in Python Imagine you have a list of items, and some i

      Python Classes and Static Methods

      For You

      Understanding @classmethod and @staticmethod In Python, most methods you define inside a class are i

      Personalized Recommendations

      Log in to get more relevant recommendations based on your reading history.