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

  • Indexing and Slicing in Python Lists Read

    Indexing and Slicing in Python Lists Read Indexing and slicing are fundamental operations to access and extract elements from a list in Python. 1. Indexing (Accessing Single Elements) Example 1: Basic Indexing python fruits = [“apple”, “banana”, “cherry”, “date”, “fig”] # Positive indexing print(fruits[0]) # “apple” (1st element) print(fruits[2]) # “cherry” (3rd element) # Negative indexing print(fruits[-1]) # “fig”…

  • Sets in Python

    Sets in Python A set in Python is an unordered collection of unique elements. Sets are mutable, meaning you can add or remove items, but the elements themselves must be immutable (like numbers, strings, or tuples). Key Characteristics of Sets: Different Ways to Create Sets in Python Here are various methods to create sets in…

  • Strings in Python Indexing,Traversal

    Strings in Python and Indexing Strings in Python are sequences of characters enclosed in single quotes (‘ ‘), double quotes (” “), or triple quotes (”’ ”’ or “”” “””). They are immutable sequences of Unicode code points used to represent text. String Characteristics Creating Strings python single_quoted = ‘Hello’ double_quoted = “World” triple_quoted = ”’This is…

  • Python Functions

    A function is a block of organized, reusable code that is used to perform a single, related action. Functions provide better modularity for your application and a high degree of code reusing. Defining a Function In Python, a function is defined using the def keyword, followed by the function name, a set of parentheses (),…

  • binary files

    # Read the original image and write to a new file original_file = open(‘image.jpg’, ‘rb’) # ‘rb’ = read binary copy_file = open(‘image_copy.jpg’, ‘wb’) # ‘wb’ = write binary # Read and write in chunks to handle large files while True: chunk = original_file.read(4096) # Read 4KB at a time if not chunk: break copy_file.write(chunk)…

  • Unlock the Power of Python: What is Python, History, Uses, & 7 Amazing Applications

    What is Python and History of python, different sectors python used Python is one of the most popular programming languages worldwide, known for its versatility and beginner-friendliness . From web development to data science and machine learning, Python has become an indispensable tool for developers and tech professionals across various industries . This blog post…

Leave a Reply

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