Bird
Raised Fist0
Pythonprogramming~5 mins

Polymorphism through functions in Python - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is polymorphism in programming?
Polymorphism means one thing can take many forms. In programming, it allows functions or methods to work with different types of data or objects.
Click to reveal answer
beginner
How does polymorphism work with functions in Python?
In Python, polymorphism lets the same function name work with different types of inputs. The function behaves differently depending on the input type.
Click to reveal answer
beginner
Example: What will this code print?
def add(a, b):
    return a + b

print(add(2, 3))
print(add('Hi, ', 'there!'))
It prints:
5
Hi, there!
The same function add works for numbers and strings because + means addition for numbers and concatenation for strings.
Click to reveal answer
beginner
Why is polymorphism useful in programming?
It makes code simpler and flexible. You can use one function for many types of data, so you write less code and it works in more situations.
Click to reveal answer
intermediate
What happens if a function expects a certain type but gets another?
If the function can't handle the input type, Python will raise an error. Polymorphism works only if the function's operations make sense for the input types.
Click to reveal answer
What does polymorphism allow a function to do?
AChange its name automatically
BOnly work with numbers
CWork with different types of inputs
DRun faster
What will this code output?
def multiply(x, y):
    return x * y

print(multiply(3, 4))
print(multiply('Hi', 3))
A12 and HiHiHi
B7 and Hi3
CError and HiHiHi
D12 and Error
If a function uses + operator, which types can it work with in Python?
ANumbers and strings
BOnly numbers
COnly strings
DLists only
What error occurs if a function tries to add a number and a string?
ASyntaxError
BTypeError
CValueError
DNameError
Why is polymorphism called 'many forms'?
ABecause it changes the function name
BBecause it only works with classes
CBecause it runs multiple times
DBecause one function can behave differently with different inputs
Explain polymorphism through functions in your own words and give a simple example.
Think about how one function can add numbers and join strings.
You got /3 concepts.
    Describe why polymorphism is helpful when writing Python functions.
    Consider how one function can replace many similar functions.
    You got /4 concepts.

      Practice

      (1/5)
      1.

      What does polymorphism through functions mean in Python?

      easy
      A. Functions cannot be reused with different inputs
      B. Multiple functions have the same name but different parameters
      C. Functions can only accept one specific data type
      D. A single function works with different data types

      Solution

      1. Step 1: Understand polymorphism concept

        Polymorphism means one function can handle different types of inputs.
      2. Step 2: Relate to function behavior

        In Python, a single function can accept various data types and behave accordingly.
      3. Final Answer:

        A single function works with different data types -> Option D
      4. Quick Check:

        Polymorphism = single function, many types [OK]
      Hint: Think: one function, many input types [OK]
      Common Mistakes:
      • Confusing polymorphism with function overloading
      • Believing functions accept only one data type
      • Mixing polymorphism with inheritance
      2.

      Which of the following is the correct way to check a variable's type inside a function for polymorphism?

      def process(value):
          # What to use here?
          pass
      easy
      A. if type(value) == int:
      B. if value is int:
      C. if isinstance(value, int):
      D. if value == int:

      Solution

      1. Step 1: Recall Python type checking methods

        Using isinstance() is the recommended way to check type in Python.
      2. Step 2: Compare options

        if isinstance(value, int): uses isinstance(value, int), which correctly checks if value is an int or subclass.
      3. Final Answer:

        if isinstance(value, int): -> Option C
      4. Quick Check:

        Use isinstance() for type checks [OK]
      Hint: Use isinstance() to check types safely [OK]
      Common Mistakes:
      • Using 'type() == int' which fails with subclasses
      • Using 'is' or '==' incorrectly for type comparison
      • Not checking type at all
      3.

      What is the output of this code?

      def describe(value):
          if isinstance(value, int):
              return f"Integer: {value}"
          elif isinstance(value, str):
              return f"String: {value}"
          else:
              return "Unknown type"
      
      print(describe(10))
      print(describe('hello'))
      print(describe(3.14))
      medium
      A. Integer: 10\nString: hello\nUnknown type
      B. Integer: 10\nString: hello\nFloat: 3.14
      C. Unknown type\nUnknown type\nUnknown type
      D. Integer: 10\nUnknown type\nUnknown type

      Solution

      1. Step 1: Check input 10

        10 is int, so returns 'Integer: 10'.
      2. Step 2: Check input 'hello'

        'hello' is str, so returns 'String: hello'.
      3. Step 3: Check input 3.14

        3.14 is float, not int or str, so returns 'Unknown type'.
      4. Final Answer:

        Integer: 10 String: hello Unknown type -> Option A
      5. Quick Check:

        Type checks match outputs [OK]
      Hint: Match isinstance checks to output lines [OK]
      Common Mistakes:
      • Assuming float is handled like int or str
      • Ignoring else case output
      • Mixing output order
      4.

      Find the error in this polymorphic function and fix it:

      def process(value):
          if isinstance(value, int):
              return value * 2
          elif isinstance(value, str):
              return value + value
          else:
              return value / 2
      
      print(process('abc'))
      print(process([1, 2, 3]))
      medium
      A. No error; code runs fine
      B. Error: Cannot divide list by 2; fix by handling list separately
      C. Error: Missing return statement for int type
      D. Error: Cannot multiply string by 2; fix by converting to int

      Solution

      1. Step 1: Analyze input 'abc'

        String input returns 'abcabc' by concatenation, no error.
      2. Step 2: Analyze input [1, 2, 3]

        List input goes to else: value / 2, but dividing list by 2 causes TypeError.
      3. Step 3: Fix the error

        Need to add a check for list type or avoid dividing list by 2.
      4. Final Answer:

        Error: Cannot divide list by 2; fix by handling list separately -> Option B
      5. Quick Check:

        List / 2 causes error [OK]
      Hint: Check operations valid for each type [OK]
      Common Mistakes:
      • Assuming all types support division
      • Not testing with different input types
      • Ignoring TypeError exceptions
      5.

      Write a polymorphic function combine that accepts either two strings or two lists and returns their concatenation. What is the output of this code?

      def combine(a, b):
          if isinstance(a, str) and isinstance(b, str):
              return a + b
          elif isinstance(a, list) and isinstance(b, list):
              return a + b
          else:
              return None
      
      print(combine('Hi, ', 'there!'))
      print(combine([1, 2], [3, 4]))
      print(combine('Hello', [1, 2]))
      hard
      A. 'Hi, there!'\n[1, 2, 3, 4]\nNone
      B. 'Hi, there!'\n[1, 2]\n[3, 4]
      C. None\nNone\nNone
      D. 'Hi, there!'\nNone\nNone

      Solution

      1. Step 1: Check first call combine('Hi, ', 'there!')

        Both are strings, so returns concatenation 'Hi, there!'.
      2. Step 2: Check second call combine([1, 2], [3, 4])

        Both are lists, so returns concatenated list [1, 2, 3, 4].
      3. Step 3: Check third call combine('Hello', [1, 2])

        Types differ, so returns None.
      4. Final Answer:

        'Hi, there!' [1, 2, 3, 4] None -> Option A
      5. Quick Check:

        Type checks control output [OK]
      Hint: Check types of both inputs before combining [OK]
      Common Mistakes:
      • Not checking both inputs' types
      • Trying to combine different types directly
      • Returning wrong default for mismatched types