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

  • Variable Length Keyword Arguments in Python

    Variable Length Keyword Arguments in Python Variable length keyword arguments allow a function to accept any number of keyword arguments. This is done using the **kwargs syntax. Syntax python def function_name(**kwargs): # function body # kwargs becomes a dictionary containing all keyword arguments Simple Examples Example 1: Basic **kwargs python def print_info(**kwargs): print(“Information received:”, kwargs) print(“Type of…

  • Date/Time Objects

    Creating and Manipulating Date/Time Objects in Python 1. Creating Date and Time Objects Creating Date Objects python from datetime import date, time, datetime # Create date objects date1 = date(2023, 12, 25) # Christmas 2023 date2 = date(2024, 1, 1) # New Year 2024 date3 = date(2023, 6, 15) # Random date print(“Date Objects:”) print(f”Christmas:…

  •  List Comprehensions 

    List Comprehensions in Python (Basic) with Examples List comprehensions provide a concise way to create lists in Python. They are more readable and often faster than using loops. Basic Syntax: python [expression for item in iterable if condition] Example 1: Simple List Comprehension Create a list of squares from 0 to 9. Using Loop: python…

  •  List operators,List Traversals

    In Python, lists are ordered, mutable collections that support various operations. Here are the key list operators along with four basic examples: List Operators in Python 4 Basic Examples 1. Concatenation (+) Combines two lists into one. python list1 = [1, 2, 3] list2 = [4, 5, 6] combined = list1 + list2 print(combined) # Output: [1, 2, 3,…

  • sqlite3 create table

    The sqlite3 module is the standard library for working with the SQLite database in Python. It provides an interface compliant with the DB-API 2.0 specification, allowing you to easily connect to, create, and interact with SQLite databases using SQL commands directly from your Python code. It is particularly popular because SQLite is a serverless database…

  • Class06,07 Operators, Expressions

    In Python, operators are special symbols that perform operations on variables and values. They are categorized based on their functionality: ⚙️ 1. Arithmetic Operators ➕➖✖️➗ Used for mathematical operations: Python 2. Assignment Operators ➡️ Assign values to variables (often combined with arithmetic): Python 3. Comparison Operators ⚖️ Compare values → return True or False: Python…

Leave a Reply

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