آرگومان ها (Arguments)
آرگومانِ تابع یعنی «ورودی». «تابع (Function)» بلوک کدی است که با «فراخوانی (Call)» اجرا می شود. آرگومان ها داخل پرانتز نام تابع می آیند. با ویرگول جدا می شوند. مثل دادن اسم دانش آموز به دفتر حضور و غیاب.
ارسال یک آرگومان
پس از نام تابع، داخل پرانتز مقدار بده. مقدار وارد بدنه می شود.
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
پارامتر در برابر آرگومان
«پارامتر (Parameter)» نام متغیر در تعریف تابع است. «آرگومان (Argument)» مقدار واقعیِ هنگام فراخوانی است.
def my_function(name):
print("Hello", name)
my_function("Emil")
تعداد آرگومان ها
تعداد باید درست باشد. اگر تابع دو آرگومان بخواهد، دقیقاً دو تا بده.
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil", "Refsnes")
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil")
مقدار پیش فرض پارامتر
می توانیم مقدار پیش فرض بدهیم. اگر آرگومان ندهیم، همان پیش فرض استفاده می شود.
def my_function(name = "friend"):
print("Hello", name)
my_function("Emil")
my_function("Tobias")
my_function()
my_function("Linus")
def my_function(country = "Norway"):
print("I am from", country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
Keyword Arguments (کلید=مقدار)
با «کلید=مقدار» ترتیب مهم نیست. نام پارامتر را مشخص می کنیم.
def my_function(animal, name):
print("I have a", animal)
print("My", animal + "'s name is", name)
my_function(animal = "dog", name = "Buddy")
def my_function(animal, name):
print("I have a", animal)
print("My", animal + "'s name is", name)
my_function(name = "Buddy", animal = "dog")
Positional Arguments (موقعیتی)
بدون کلید، ترتیب اهمیت دارد. جای هر مقدار باید درست باشد.
def my_function(animal, name):
print("I have a", animal)
print("My", animal + "'s name is", name)
my_function("dog", "Buddy")
def my_function(animal, name):
print("I have a", animal)
print("My", animal + "'s name is", name)
my_function("Buddy", "dog")
ترکیب موقعیتی و کلیدی
اول موقعیتی ها بیایند. سپس کلیدی ها بیایند.
def my_function(animal, name, age):
print("I have a", age, "year old", animal, "named", name)
my_function("dog", name = "Buddy", age = 5)
ارسال انواع داده مختلف
می توان رشته، عدد، لیست، دیکشنری و… فرستاد. نوع داخل تابع حفظ می شود.
def my_function(fruits):
for fruit in fruits:
print(fruit)
my_fruits = ["apple", "banana", "cherry"]
my_function(my_fruits)
def my_function(person):
print("Name:", person["name"])
print("Age:", person["age"])
my_person = {"name": "Emil", "age": 25}
my_function(my_person)
بازگرداندن مقدار
با return خروجی می دهیم. سپس تابع متوقف می شود.
def my_function(x, y):
return x + y
result = my_function(5, 3)
print(result)
def my_function():
return ["apple", "banana", "cherry"]
fruits = my_function()
print(fruits[0])
print(fruits[1])
print(fruits[2])
def my_function():
return (10, 20)
x, y = my_function()
print("x:", x)
print("y:", y)
فقط موقعیتی: علامت /
با گذاشتن / بعد پارامترها، فقط موقعیتی می شوند. کلیدی قبول نیست.
def my_function(name, /):
print("Hello", name)
my_function("Emil")
def my_function(name):
print("Hello", name)
my_function(name = "Emil")
def my_function(name, /):
print("Hello", name)
my_function(name = "Emil")
فقط کلیدی: علامت *
با *, قبل از پارامترها، مجبور می شویم کلیدی بدهیم.
def my_function(*, name):
print("Hello", name)
my_function(name = "Emil")
def my_function(name):
print("Hello", name)
my_function("Emil")
def my_function(*, name):
print("Hello", name)
my_function("Emil")
ترکیب / و *
قبل از / فقط موقعیتی هستند. بعد از * فقط کلیدی هستند.
def my_function(a, b, /, *, c, d):
return a + b + c + d
result = my_function(5, 10, c = 15, d = 20)
print(result)
نکته: ادامه مسیر را در آرگومان های متغیر بخوان. برای پایه توابع، توابع را مرور کن. برای تمرین حلقه، حلقه for کمک می کند.
گام های عملی
- تابعی با دو پارامتر بساز و چاپ کن.
- یک بار موقعیتی صدا بزن. یک بار کلیدی.
- برای یکی پیش فرض بگذار و بدون آرگومان صدا بزن.
جمع بندی سریع
- تعداد آرگومان ها باید درست باشد.
- پیش فرض ها آرگومانِ خالی را پوشش می دهند.
- کلیدی ها ترتیب نمی خواهند.
- موقعیتی ها ترتیب می خواهند.
- / فقط موقعیتی و * فقط کلیدی می سازند.