1.1 Məşhur daxili funksiyaların siyahısı
Biz artıq bir çox daxili funksiya ilə tanış olmuşuq, amma mən sizə yaxın zamanda faydalı olacaq bir neçə funksiyadan danışmaq istəyirəm:
id()
hash()
dir()
Aşağıda onlara daha ətraflı nəzər salaq:
id()
funksiyası
id()
funksiyası unikal obyeсt identifikatorunu (əvvəlcə rəqəm) qaytarır. Bu identifikator tam ədəddir və obyektin mövcudluğu ərzində unikal qalır. Adətən identifikator obyektin yaddaşdakı ünvanına uyğun gəlir, baxmayaraq ki, bu Pythonun spesifikasiyasında zəmanət verilmir.
Obyektin unikal identifikatorunu istifadə etmək çoxlu əməliyyatları daha yaxşı anlamaq üçün yararlıdır, məsələn, obyektlərin harada təkrarlandığını və harada eyni obyekti göstərən referansların olduğunu anlamaq. Eyni obyektlərdə fərqli identifikatorlar olacaq, lakin eyni obyektə yönəlmiş referanslar eyni identifikatoru göstərəcək.
Proqramın debug olunması və Python-un yaddaşda obyektləri necə idarə etdiyini öyrənmək məqsədilə istifadə oluna bilər.
a = [1, 2, 3]
b = a
print(id(a)) # 'a' obyektinin identifikatorunu çıxarır
print(id(b)) # Eyni identifikatoru çıxarır, çünki 'b' eyni obyekti göstərir
hash()
funksiyası
hash()
funksiyası müəyyən obyekt üçün hesh-dəyəri (rəqəm) qaytarır, əgər obyekt hesh ediləbiləndirsə. Python-da hesh ediləbilən obyektlər dəyişməz olmalıdır və onların həyat dövrü ərzində sabit hesh dəyərinə sahib olmalıdır.
Məsələn, belə obyektlərə rəqəmlər, sətirlər və tuple-lar daxildir (əgər onların bütün elementləri də hesh ediləbiləndirsə). Hesh dəyərləri, sözlüklərdə və çoxluqlarda məlumatın sürətli axtarışı üçün istifadə edilir. Məlumatların axtarışı və saxlanmasında sürətli bərabərlik və unikal yoxlamalar üçün istifadə olunur.
print(hash("salam")) # "salam" sətirinin hesh-dəyərini qaytarır
print(hash(42)) # 42 rəqəminin hesh-dəyərini qaytarır
print(hash((1, 2, 3))) # (1, 2, 3) tuple-nın hesh-dəyərini qaytarır
Diqqət!
Dəyişməz obyektlərin hesh dəyərləri onların həyat dövrü boyunca sabit qalır. Lakin dəyişən obyektlər, məsələn, siyahılar və sözlüklər hesh edilə bilən deyil və sözlük açarları və ya çoxluq elementləri kimi istifadə edilə bilməz.
dir()
funksiyası
dir()
funksiyası obyektin atribut və metodlarının siyahısını qaytarır. Əgər obyekt göstərilməyibsə, dir()
indiki lokal sahədə olan adların siyahısını qaytarır. Bu funksiya obyektlərin strukturunu və onların atributlarını öyrənmək üçün faydalıdır.
Obyektin bütün atribut və metodlar siyahısını əldə etmək üçün istifadə olunur, bu da onun strukturunu və mövcud funksiyaları daha yaxşı başa düşməyə kömək edir. Tez-tez debug məqsədilə və obyektləri öyrənmək üçün istifadə olunur, xüsusilə sənədləşmə məhdud olduqda və ya əlçatan olmadıqda.
class MyClass:
def __init__(self):
self.name = "Aysel"
def greet(self):
print("Salam, " + self.name)
obj = MyClass()
print(dir(obj)) # 'obj' obyektinin atribut və metodlar siyahısını çıxarır
print(dir()) # Indiki lokal sahədə olan adların siyahısını çıxarır
1.2 Kolleksiyalarla iş
Kolleksiyalarla iş üçün bir neçə faydalı funksiyalar var. Ola bilər, onlar daha əvvəlki mühazirələrdə qeyd olunmuşdu, amma indi mən onları bir az daha ətraflı izah etmək istəyirəm.
zip()
min()
max()
sum()
count()
zip()
funksiyası
zip()
funksiyası bir neçə iterasiya olunan obyektləri (məsələn, siyahılar, korteclər, sətirlər) birləşdirir və korteclərin iteratorunu qaytarır. Hər kortec, bütün iterasiya olunan obyektlərdə eyni indeksdə olan elementləri ehtiva edir.
Tez-tez bir neçə iterasiya olunan obyektlərdəki məlumatları birləşdirmək üçün istifadə olunur, bu da onları rahat şəkildə eyni anda iterasiya etməyə imkan verir. Həmçinin, iki siyahıdan — biri açar, digəri dəyərlər üçün — sözlüklər yaratmaq üçün də istifadə olunur.
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
combined = zip(names, ages)
print(list(combined)) # Çıxış: [('Alice', 25), ('Bob', 30), ('Charlie', 35)]
max()
funksiyası
max()
funksiyası verilən iterasiya olunan obyektin və ya verilən arqumentlərin ən böyük elementini qaytarır. Müqayisə qaydasını təyin etmək üçün açar funksiyası da göstərə bilərsiniz.
numbers = [1, 2, 3, 4, 5]
print(max(numbers)) # Çıxış: 5
# Açar funksiyası ilə
words = ["apple", "banana", "cherry"]
print(max(words, key=len)) # Çıxış: 'banana'
min()
funksiyası
min()
funksiyası verilən iterasiya olunan obyektin və ya verilən arqumentlərin ən kiçik elementini qaytarır. Müqayisə qaydasını təyin etmək üçün açar funksiyası da göstərə bilərsiniz.
numbers = [1, 2, 3, 4, 5]
print(min(numbers)) # Çıxış: 1
# Açar funksiyası ilə
words = ["apple", "banana", "cherry"]
print(min(words, key=len)) # Çıxış: 'apple'
count()
funksiyası
count()
funksiyası iterasiya olunan obyektdə, məsələn, siyahıda və ya sətirdə elementin neçə dəfə daxil olduğunu saymaq üçün istifadə olunur. Siyahı, kolleksiya və ya iteratorda çağırılır.
numbers = [1, 2, 2, 3, 4, 2, 5]
print(numbers.count(2)) # Çıxış: 3
text = "hello world"
print(text.count("o")) # Çıxış: 2
sum()
funksiyası
sum()
funksiyası iterasiya olunan obyektin bütün elementlərinin cəmini qaytarır. İstəyə görə başlanğıc dəyərini göstərə bilərsiniz, bu da cəminə əlavə olunacaq.
numbers = [1, 2, 3, 4, 5]
print(sum(numbers)) # Çıxış: 15
# Başlanğıc dəyəri ilə
print(sum(numbers, 10)) # Çıxış: 25
1.3 Kodun icrası
Və bir neçə daha funksiya, hansılar ki, yeni başlayan biri kimi sizə faydalı ola bilərlər:
eval()
exec()
Onlar güclü imkanlara malikdirlər, amma təhlükəsizlik baxımından risklərə görə diqqətli istifadə olunmalıdırlar. Hər bir funksiya haqqında ətraflı məlumat:
eval()
funksiyası
eval(expression)
funksiyası bir sətir qəbul edir və onu Python ifadəsi kimi icra edir. Bu ifadənin yerinə yetirilməsi nəticəsini qaytarır. Python kodu kimi mətn ifadələri hesab etmək üçün istifadə olunur.
Nümunələr:
x = 10
result = eval("x + 5")
print(result) # Çıxış: 15
exec()
funksiyası
exec()
funksiyası bir sətir qəbul edir və onu Python kodu kimi icra edir. eval()
-dan fərqli olaraq, hansı ki, yalnız ifadələri icra edir, exec()
Python-un istənilən təlimatlarını, o cümlədən funksiyaların təriflərini, döngüləri və modul idxallarını icra edə bilər. Bu funksiya heç bir dəyər qaytarmır.
Dinamik skriptlərin icrası və proqramın icrası zamanı yeni funksiyalar və ya siniflərin təyin olunması üçün istifadə olunur.
code = """
def greet(name):
print(f"Salam, {name}!")
greet("Alice")
"""
exec(code)
# Çıxış: Salam, Alice!
Diqqət!
eval()
kimi, exec()
də etibarsız verilənlərlə işlədikdə təhlükəli ola bilər. Diqqətli olun və exec()
-dən production-da kod icrası üçün çəkinin.
GO TO FULL VERSION