Positional-Only Arguments in Python

Positional-Only Arguments in Python

Positional-only arguments are function parameters that must be passed by position (order) and cannot be passed by keyword name.

Syntax

Use the / symbol in the function definition to indicate that all parameters before it are positional-only:

python

def function_name(param1, param2, /, param3, param4):
    # function body

Simple Examples

Example 1: Basic Positional-Only Arguments

python

def calculate_area(length, width, /):
    area = length * width
    print(f"Area: {area} square units")

# These work (positional arguments):
calculate_area(5, 3)    # Output: Area: 15 square units
calculate_area(10, 2)   # Output: Area: 20 square units

# This will cause an ERROR (keyword arguments not allowed):
# calculate_area(length=5, width=3)

Example 2: Mixing Positional-Only and Regular Arguments

python

def create_person(name, age, /, country):
    print(f"Name: {name}, Age: {age}, Country: {country}")

# Valid calls:
create_person("Alice", 25, "USA")          # Positional for all
create_person("Bob", 30, country="Canada") # Positional for first two, keyword for last

# Invalid calls:
# create_person(name="Charlie", age=35, country="UK")  # ERROR: name and age are positional-only

Example 3: Practical Example – Math Operations

python

def power(base, exponent, /):
    result = base ** exponent
    print(f"{base} to the power of {exponent} = {result}")

power(2, 3)     # Output: 2 to the power of 3 = 8
power(5, 2)     # Output: 5 to the power of 2 = 25

# This would cause an error:
# power(base=2, exponent=3)

Example 4: With Default Arguments

python

def greet(name, /, message="Hello"):
    print(f"{message}, {name}!")

# Valid calls:
greet("John")                   # Output: Hello, John!
greet("Sarah", "Hi")            # Output: Hi, Sarah!
greet("Mike", message="Hey")    # Output: Hey, Mike!

# Invalid call:
# greet(name="Emma")  # ERROR: name is positional-only

Real-World Use Cases

Example 5: File Processing

python

def process_file(file_path, /, mode="read"):
    print(f"Processing {file_path} in {mode} mode")

process_file("data.txt")                # Output: Processing data.txt in read mode
process_file("image.jpg", "write")      # Output: Processing image.jpg in write mode

# This would be invalid:
# process_file(file_path="document.pdf")

Example 6: Coordinate System

python

def plot_point(x, y, /, color="black", size=1):
    print(f"Point at ({x}, {y}) with {color} color and size {size}")

plot_point(10, 20)                      # Output: Point at (10, 20) with black color and size 1
plot_point(5, 15, "red", 2)             # Output: Point at (5, 15) with red color and size 2
plot_point(3, 7, color="blue", size=3)  # Output: Point at (3, 7) with blue color and size 3

# Invalid:
# plot_point(x=1, y=2)

Key Points to Remember

  1. Positional-only arguments must come before the /
  2. They cannot be passed using keyword syntax
  3. They make function APIs more strict and predictable
  4. Useful when parameter names might change in the future
  5. Helps prevent users from relying on specific parameter names

When to Use Positional-Only Arguments

  • When parameter names are not descriptive or might change
  • For mathematical functions where order matters (like coordinates)
  • When you want to enforce a specific calling convention
  • For internal functions where you want to prevent keyword usage

Positional-only arguments give you more control over how your functions are called!

Similar Posts

  • Examples of Python Exceptions

    Comprehensive Examples of Python Exceptions Here are examples of common Python exceptions with simple programs: 1. SyntaxError 2. IndentationError 3. NameError 4. TypeError 5. ValueError 6. IndexError 7. KeyError 8. ZeroDivisionError 9. FileNotFoundError 10. PermissionError 11. ImportError 12. AttributeError 13. RuntimeError 14. RecursionError 15. KeyboardInterrupt 16. MemoryError 17. OverflowError 18. StopIteration 19. AssertionError 20. UnboundLocalError…

  • re.I, re.S, re.X

    Python re Flags: re.I, re.S, re.X Explained Flags modify how regular expressions work. They’re used as optional parameters in re functions like re.search(), re.findall(), etc. 1. re.I or re.IGNORECASE Purpose: Makes the pattern matching case-insensitive Without re.I (Case-sensitive): python import re text = “Hello WORLD hello World” # Case-sensitive search matches = re.findall(r’hello’, text) print(“Case-sensitive:”, matches) # Output: [‘hello’] # Only finds lowercase…

  • Indexing and Slicing for Writing (Modifying) Lists in Python

    Indexing and Slicing for Writing (Modifying) Lists in Python Indexing and slicing aren’t just for reading lists – they’re powerful tools for modifying lists as well. Let’s explore how to use them to change list contents with detailed examples. 1. Modifying Single Elements (Indexing for Writing) You can directly assign new values to specific indices. Example 1:…

  • pop(), remove(), clear(), and del 

    pop(), remove(), clear(), and del with 5 examples each, including slicing where applicable: 1. pop([index]) Removes and returns the item at the given index. If no index is given, it removes the last item. Examples: 2. remove(x) Removes the first occurrence of the specified value x. Raises ValueError if not found. Examples: 3. clear() Removes all elements from the list, making it empty. Examples: 4. del Statement Deletes elements by index or slice (not a method, but a…

Leave a Reply

Your email address will not be published. Required fields are marked *