7.1 Funksiyanın bütün arqumentlərini əldə etmək
Python dilində funksiyanın daxilində ona ötürülən bütün parametrlərin siyahısını əldə etmək üçün bir neçə çox rahat üsul var. Gəlin bunları öyrənək.
*args
istifadə edilməsi
*args
funksiyaya dəyişən sayda mövqeli (adi) arqumentlər ötürməyə imkan verir. Bu arqumentlər tuple olaraq qablaşdırılır və funksiyanın daxilində emal edilə bilər.
def print_numbers(*args):
for arg in args:
print(arg)
print_numbers(1, 2, 3, 4, 5)
İzah
print_numbers
funksiyası dəyişən sayda mövqeli arqumentləri qəbul edir, hansı ki args
tuple-unda qablaşdırılmışdır. Biz dövr for
ilə arqumentləri funksiyanın daxilində dövrə sala bilərik.
Üstünlüklər
- Elastiklik: Funksiyaya istənilən sayda arqument ötürməyə imkan verir.
- Ümumi yanaşma: Parametrlərin sayı qeyri-müəyyən olan funksiyalar üçün istifadə edilə bilər.
**kwargs
istifadə edilməsi
**kwargs
funksiyaya dəyişən sayda adlandırılmış arqumentləri ötürməyə imkan verir. Bu arqumentlər dictionary-də qablaşdırılır və funksiyanın daxilində emal edilə bilər.
def print_person_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_person_info(name="Alice", age=30, city="New York")
İzah
print_person_info
funksiyası dəyişən sayda adlandırılmış arqumentləri qəbul edir, hansı ki kwargs
dictionary-də qablaşdırılmışdır. Biz dictionary-nin items()
metodu vasitəsilə arqumentləri dövrə sala bilərik.
Üstünlüklər
- Elastiklik: Funksiyaya istənilən sayda adlandırılmış arqument ötürməyə imkan verir.
- Oxunaqlılıq: Adlandırılmış arqumentlər funksiyanın çağırışlarını daha oxunaqlı edir.
7.2 Argumentlərin tipi üzərində məhdudiyyətlər
Yalnız mövqeli argumentlər
Python 3.8 və yuxarı versiyalarda mövqeli argumentlər ilə funksiyalar təyin etmək olar, hansı ki, yalnız mövqeyə görə verilə bilər. Bu, funksiyanın müəyyənləşdirilməsində /
simvolundan istifadə etməklə edilir.
def greet(name, /, greeting="Salam"):
print(f"{greeting}, {name}!")
greet("Aylin") # Nəticə: Salam, Aylin!
greet("Aylin", greeting="Salam") # Nəticə: Salam, Aylin!
# greet(name="Aylin") # Xəta: TypeError
İzah
greet
funksiyası bir name
arqumentini qəbul edir, hansı ki, yalnız mövqeyə görə verilə bilər. Argumentlər / simvolundan əvvəl
yalnız mövqedən verilə bilər.
Bu yanaşma argumentlərin veriliş üsulunu məhdudlaşdırmağa imkan verir, oxunaqlılığı artırır və xətaların qarşısını alır.
Yalnız adlandırılmış argumentlər (Keyword-Only Arguments)
Bundan başqa, yalnız ad ilə verilə bilən funksiya parametrləri də təyin etmək olar. Bu, funksiyanın müəyyənləşdirilməsində *
simvolundan istifadə edərək edilir.
def greet(*, name, greeting="Salam"):
print(f"{greeting}, {name}!")
greet(name="Aylin") # Nəticə: Salam, Aylin!
greet(name="Aylin", greeting="Salam") # Nəticə: Salam, Aylin!
# greet("Aylin") # Xəta: TypeError
greet
funksiyası bir name
arqumentini qəbul edir, hansı ki, yalnız ad ilə verilə bilər. Argumentlər * simvolundan sonra
yalnız ad ilə verilə bilər.
Bu yanaşma argumentlərin adlarını açıq şəkildə göstərməyə imkan verir və kodun oxunaqlılığını artırır.
Mövqeli və adlandırılmış argumentlərin kombinasiyası
Daha çox çeviklik əldə etmək üçün mövqeli və adlandırılmış argumentləri kombinə etmək olar.
def greet(name, /, *, greeting="Salam"):
print(f"{greeting}, {name}!")
greet("Aylin") # Nəticə: Salam, Aylin!
greet("Aylin", greeting="Salam") # Nəticə: Salam, Aylin!
# greet(name="Aylin") # Xəta: TypeError
greet
funksiyası bir name
arqumentini qəbul edir, hansı ki, yalnız mövqeyə görə verilə bilər, və adlandırılmış greeting
arqumenti, hansı ki, mütləq ad ilə verilməlidir. /
və *
istifadə edilməsi mövqeli və adlandırılmış argumentləri kombinə etməyə imkan verir.
Bütün üç vəziyyətin tam nümunəsi:
def full_example(a, b, /, c, d, *, e, f):
print(f"a={a}, b={b}, c={c}, d={d}, e={e}, f={f}")
# Fərqli argumentlərlə funksiyanın çağırılması
full_example(1, 2, 3, 4, e=5, f=6) # Bütün argumentlər düzgün verilib
# full_example(a=1, b=2, c=3, d=4, e=5, f=6) # Xəta: TypeError
İzah
- Yalnız mövqeli argumentlər:
a
vəb
yalnız mövqedən verilə bilər. - Adet mövqeli və ya adlandırılmış argumentlər:
c
vəd
həm mövqedən, həm də ad ilə verilə bilər. - Yalnız adlandırılmış argumentlər:
e
vəf
yalnız ad ilə verilə bilər.
GO TO FULL VERSION