آرگومانهای تابع در پایتون
آرگومانهای موقعیتی، کلیدواژهای، پیشفرض، *args و **kwargs در پایتون
انواع آرگومان در پایتون
پایتون انعطافپذیری زیادی در نحوه ارسال آرگومان به توابع دارد.
۱. آرگومانهای موقعیتی (Positional)
بهترتیب به پارامترها اختصاص مییابند:
def greet(name, message):
print(f"{message}، {name}!")
greet("علی", "سلام") # name="علی"، message="سلام"
۲. آرگومانهای کلیدواژهای (Keyword)
با نام پارامتر مشخص میشوند — ترتیب مهم نیست:
def greet(name, message):
print(f"{message}، {name}!")
greet(message="سلام", name="علی") # ترتیب مهم نیست!
greet(name="مریم", message="خوش آمدی")
۳. ترکیب موقعیتی و کلیدواژهای
def greet(name, message, punctuation):
print(f"{message}، {name}{punctuation}")
greet("علی", message="سلام", punctuation="!")
آرگومانهای موقعیتی باید قبل از کلیدواژهای بیایند!
۴. مقادیر پیشفرض
def greet(name, message="سلام"):
print(f"{message}، {name}!")
greet("علی") # سلام، علی!
greet("مریم", "درود") # درود، مریم!
۵. *args — آرگومانهای متغیر
وقتی نمیدانید چند آرگومان دریافت میشود:
def sum_all(*args):
total = 0
for num in args:
total += num
return total
print(sum_all(1, 2, 3)) # 6
print(sum_all(1, 2, 3, 4, 5)) # 15
print(sum_all()) # 0
*args تمام آرگومانها را بهصورت یک تاپل دریافت میکند.۶. **kwargs — آرگومانهای کلیدواژهای متغیر
برای دریافت آرگومانهای کلیدواژهای نامحدود:
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="علی", age=25, city="تهران")
# name: علی
# age: 25
# city: تهران
**kwargs آرگومانهای کلیدواژهای را بهصورت دیکشنری دریافت میکند.ترکیب همه انواع
def func(a, b, *args, **kwargs):
print(f"a={a}, b={b}")
print(f"args={args}")
print(f"kwargs={kwargs}")
func(1, 2, 3, 4, x=5, y=6)
# a=1, b=2
# args=(3, 4)
# kwargs={'x': 5, 'y': 6}
Unpacking با * و **
# لیست به آرگومان
def add(a, b, c):
return a + b + c
numbers = [1, 2, 3]
print(add(*numbers)) # 6
# دیکشنری به kwargs
def greet(name, message):
print(f"{message}، {name}!")
info = {"name": "علی", "message": "سلام"}
greet(**info)
پارامتر فقط کلیدواژهای (Keyword-only)
با قرار دادن * قبل از پارامتر:
def func(a, *, b):
print(a, b)
func(1, b=2) # ✅
# func(1, 2) # ❌ خطا! b باید کلیدواژهای باشد
مثال کاربردی
# تابعی که هر تعداد عدد را میانگین میگیرد
def average(*numbers):
if not numbers:
return 0
return sum(numbers) / len(numbers)
print(average(10, 20, 30)) # 20.0
print(average(5, 10)) # 7.5
خلاصه
| نوع | سینتکس | توضیح |
|---|---|---|
| موقعیتی | f(1, 2) | به ترتیب |
| کلیدواژهای | f(a=1, b=2) | با نام |
| پیشفرض | def f(a=1) | اختیاری |
| *args | def f(*args) | متغیر (تاپل) |
| **kwargs | def f(**kwargs) | کلیدواژه (دیکشنری) |
این مبحث بخشی از دوره آموزش کامل پایتون است.