Interview question
What are *args and **kwargs used for in Python functions? Python functions में *args और **kwargs किस लिए इस्तेमाल होते हैं?
Answer
| Syntax | Collects | Accessed as |
|---|---|---|
| *args | Extra positional arguments | Tuple |
| **kwargs | Extra keyword arguments | Dictionary |
def describe(*args, **kwargs):
print('Positional:', args)
print('Keyword:', kwargs)
describe(1, 2, 3, name='John', age=30)
# Positional: (1, 2, 3)
# Keyword: {'name': 'John', 'age': 30}
# Practical use: flexible function signatures
def sum_all(*numbers):
return sum(numbers)
print(sum_all(1, 2, 3, 4)) # 10
# Unpacking when CALLING a function
def greet(name, greeting):
return f'{greeting}, {name}'
args_list = ['John', 'Hello']
kwargs_dict = {'name': 'John', 'greeting': 'Hello'}
print(greet(*args_list)) # unpacks list as positional args
print(greet(**kwargs_dict)) # unpacks dict as keyword args
# Combining with regular parameters (order matters)
def func(a, b, *args, **kwargs):
print(a, b, args, kwargs)
func(1, 2, 3, 4, x=5, y=6) # 1 2 (3, 4) {'x': 5, 'y': 6}| Syntax | क्या collect करता है | Access |
|---|---|---|
| *args | Extra positional arguments | Tuple |
| **kwargs | Extra keyword arguments | Dictionary |
def describe(*args, **kwargs):
print('Positional:', args)
print('Keyword:', kwargs)
describe(1, 2, 3, name='John', age=30)
# Positional: (1, 2, 3)
# Keyword: {'name': 'John', 'age': 30}
def sum_all(*numbers):
return sum(numbers)
print(sum_all(1, 2, 3, 4)) # 10
# Function call करते समय unpacking
def greet(name, greeting):
return f'{greeting}, {name}'
args_list = ['John', 'Hello']
kwargs_dict = {'name': 'John', 'greeting': 'Hello'}
print(greet(*args_list))
print(greet(**kwargs_dict))Was this answer clear?