Python — yüksək səviyyəli interpretasiya olunan proqramlaşdırma dili, yığcam sintaksisi və zəngin kitabxana ekosistemi ilə tanınır. Mobil inkişafda Python qurma avtomatlaşdırması üçün köməkçi skriptlər, AI/ML modellərinin öyrədilməsi və Django və ya FastAPI ilə server məntiqinin yazılması üçün istifadə olunur. PYPL (2026) məlumatlarına görə, Python proqramlaşdırma dilləri arasında dünyada birinci yerdədir.
Əsas məqamlar
Python — dinamik ciddi tipləşdirmə və avtomatik yaddaş idarəetməsi ilə interpretasiya olunan dil. 1991-ci ildə Qvido van Rossum tərəfindən yaradılmışdır. Dilin fəlsəfəsi (The Zen of Python) kodun oxunaqlılığını təbliğ edir: «aşkar olan qeyri-aşkardan yaxşıdır», «sadə olan mürəkkəbdən yaxşıdır». Python 3.12+ nümunə uyğunlaşdırmasını (match-case) və təkmilləşdirilmiş generikləri dəstəkləyir.
Python-un standart kitabxanası JSON (json), HTTP (urllib), arxivlər (zipfile), müntəzəm ifadələr (re) və verilənlər bazaları (sqlite3) ilə iş üçün modulları ehtiva edir. Üçüncü tərəf — PyPI-da ümumi yükləmə sayı 500 milyarddan çox olan on minlərlə paket. PyPI (Python Package Index) — Python paketlərinin ən böyük repositoriyası.
Python C dilində yazılmış CPython interpretatorundan istifadə edir. Alternativ tətbiqlər: PyPy (JIT kompilasiyası, təmiz Python üçün 2–5 dəfə sürətli), Cython (Python-un C-yə kompilasiyası), Numba (ədədi hesablamalar üçün JIT). Mobil skriptlər üçün CPython kifayətdir — avtomatlaşdırma tapşırıqları üçün interpretasiya sürəti kritik deyil.
Python 2 dəstəyi 2020-ci ildə dayandırıldı. Bütün müasir layihələr Python 3-dən istifadə edir. Cari versiya — təkmilləşdirilmiş JIT kompilatoru və eksperimental sərbəst axın dəstəyi (free-threaded Python) ilə 3.13 (2025). Mobil inkişaf üçün bütün əsas kitabxanalarla uyğun olan 3.11–3.12 versiyası sabitdir.
| Versiya | İl | Əsas yenilik |
|---|---|---|
| Python 3.6 | 2016 | f-sətirlər, dəyişənlər üçün tip göstərişləri |
| Python 3.8 | 2019 | morj operatoru (:=), yalnız mövqeli parametrlər |
| Python 3.10 | 2021 | match-case, dəqiq tiplər, Union operatorları |
| Python 3.11 | 2022 | CPython-un 10–60% sürətləndirilməsi, istisna qrupları |
| Python 3.12 | 2023 | Tipləşdirmədə funksiya yüklənməsinin dəstəyi |
| Python 3.13 | 2025 | JIT kompilatoru, free-threaded rejimi |
Python — mobil inkişafda avtomatlaşdırma skriptləri üçün əsas dil. APK və IPA-nın qurulması, sətir resurslarının işlənməsi, maketlərdən ekranların yaradılması və tətbiq mağazalarına yerləşdirilməsi üçün istifadə olunur. Bitrise (2025) məlumatlarına görə, mobil tətbiqlərin CI/CD pipeline-larının 60%-dən çoxu Python addımlarını ehtiva edir.
Ən çox rast gəlinən ssenari — Fastlane Ruby ilə bütün ehtiyacları qarşılamır və Python onu tamamlayır: mürəkkəb şəkil emalı məntiqi, App Store Connect API ilə iş, Xcode hesabatlarının pars edilməsi və ekran görüntülərinin yaradılması. Python skriptləri Fastfile-da sh-addımları və ya birbaşa GitHub Actions vasitəsilə çağırılır.
# Tətbiq ekran görüntülərinin avtomatik ölçüsünü dəyişmək üçün skript
import os
from PIL import Image
def resize_screenshots(input_dir: str, output_dir: str, size: tuple) -> None:
"""Bütün PNG ekran görüntülərini tələb olunan mağaza ölçüsünə dəyişir."""
for filename in os.listdir(input_dir):
if not filename.lower().endswith(".png"):
continue
path = os.path.join(input_dir, filename)
img = Image.open(path)
resized = img.resize(size, Image.LANCZOS)
out_path = os.path.join(output_dir, filename)
resized.save(out_path, "PNG")
print(f"Resized {filename} -> {out_path}")
resize_screenshots("screenshots_raw", "screenshots_resized", (1242, 2208))Nümunədə skript qovluqdakı bütün PNG fayllarından keçir, onları ən yaxşı keyfiyyət üçün LANCZOS filtri ilə iPhone 6.5" (1242x2208) ölçüsünə dəyişir. print-də f-sətri faylın adını əvəz edir. Bu skript mağaza hazırlığında saatlarla əl işinə qənaət edir.
Android üçün Python sətir resurslarının (strings.xml) işlənməsi, müxtəlif ekran sıxlıqları üçün dimen fayllarının yaradılması və vektor qrafikasının çevrilməsində faydalıdır. LXML və xml.etree.ElementTree Android-in XML resurslarını pars etməyə və dəyişdirməyə imkan verir.
# Tərcümələrlə CSV faylından strings.xml-in yaradılması
import csv
from xml.etree import ElementTree as ET
from xml.dom import minidom
def csv_to_strings(csv_path: str, lang: str) -> str:
root = ET.Element("resources")
with open(csv_path, "r") as f:
reader = csv.DictReader(f)
for row in reader:
el = ET.SubElement(root, "string")
el.set("name", row["key"])
el.text = row[lang]
rough = ET.tostring(root, encoding="unicode")
parsed = minidom.parseString(rough.encode())
return parsed.toprettyxml(indent=" ")
print(csv_to_strings("translations.csv", "ru"))Python — maşın öyrənməsi üçün əsas dil. TensorFlow, PyTorch, scikit-learn, JAX və Hugging Face Transformers Python üçün yazılmışdır. Mobil tərtibatçılar Python-dan cihazda icra üçün TFLite (Android) və ya Core ML (iOS)-ə çevrilən modelləri öyrətmək üçün istifadə edirlər.
TensorFlow Lite — Google-ın cihazda maşın öyrənməsi üçün freymvorku. Python-da öyrədilmiş model TensorFlow Converter vasitəsilə .tflite-ə çevrilir və Interpreter API vasitəsilə Android tətbiqinə yüklənir. iOS üçün oxşar pipeline PyTorch -> Core ML vasitəsilə.
# İşarələrin təsnifatı üçün sadə modelin öyrədilməsi
import tensorflow as tf
from tensorflow import keras
model = keras.Sequential([
keras.layers.Input(shape=(64, 64, 3)),
keras.layers.Conv2D(32, (3, 3), activation="relu"),
keras.layers.MaxPooling2D(2, 2),
keras.layers.Conv2D(64, (3, 3), activation="relu"),
keras.layers.Flatten(),
keras.layers.Dense(128, activation="relu"),
keras.layers.Dropout(0.2),
keras.layers.Dense(4, activation="softmax")
])
model.compile(optimizer="adam",
loss="sparse_categorical_crossentropy",
metrics=["accuracy"])
# Öyrənmədən sonra TFLite-a çevrilmə
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
with open("gesture_model.tflite", "wb") as f:
f.write(tflite_model)
print(f"Model size: {len(tflite_model)} bytes")Sequential modeli hovuzlama ilə iki konvolyusiya təbəqəsi (Conv2D), tam əlaqəli təbəqə (Dense) və requlyarizasiya üçün Dropout daxildir. Çevrilmədən sonra .tflite modeli orijinal SavedModel-dən 4–6 dəfə az yer tutur və mobil CPU və ya GPU-da işləyir.
Müasir yanaşma — TensorFlow Federated və ya MLX (Apple) vasitəsilə birbaşa cihazda öyrənmə. Python skripti arxitekturanı təyin edir və öyrənmə serverə göndərmədən istifadəçi məlumatlarında aparılır. Bu məxfiliyi artırır, lakin tətbiqi daha mürəkkəbdir. Əksər layihələr klassik pipeline-dan istifadə edir: Python-da öyrənmə -> TFLite -> cihazda inferensiya.
Python — mobil tətbiqlərin backend-i üçün məşhur seçimdir. Django REST Framework (DRF) və FastAPI tez bir zamanda REST API və ya GraphQL server yaratmağa imkan verir. Python backend-i mobil müştərilərdən sorğuları emal edir, autentifikasiyanı idarə edir və WebSocket vasitəsilə məlumatları sinxronlaşdırır.
FastAPI — asinxron dəstək, OpenAPI spesifikasiyasının avtomatik yaradılması və Pydantic vasitəsilə validasiya ilə müasir freymvork. FastAPI-nin performansı Node.js və Go ilə müqayisə edilə bilər — bir nüvədə 10 000 sorğu/saniyəyə qədər. Mobil backend üçün FastAPI inkişaf sürəti və quraşdırılmış sənədləşməyə görə seçilir.
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List
import sqlite3
app = FastAPI(title="Mobile App API")
class UserCreate(BaseModel):
username: str
email: str
avatar_url: str | None = None
@app.post("/users", status_code=201)
async def create_user(payload: UserCreate):
conn = sqlite3.connect("app.db")
cur = conn.execute(
"INSERT INTO users (username, email) VALUES (?, ?)",
(payload.username, payload.email)
)
conn.commit()
user_id = cur.lastrowid
conn.close()
return {"id": user_id, "username": payload.username}
@app.get("/users/{user_id}")
async def get_user(user_id: int):
conn = sqlite3.connect("app.db")
row = conn.execute(
"SELECT id, username, email FROM users WHERE id = ?",
(user_id,)
).fetchone()
conn.close()
if not row:
raise HTTPException(status_code=404, detail="User not found")
return {"id": row[0], "username": row[1], "email": row[2]}Pydantic modeli UserCreate giriş məlumatlarını validasiya edir: username və email məcburi sətirlər, avatar_url isə isteğe bağlıdır. Asinxron endpointlər (async def) verilənlər bazasını gözləyərkən serveri bloklamır. İstifadəçi uğurla yaradıldıqda 201 status kodu qaytarılır.
Python WebSocket-i FastAPI WebSocket və ya websockets kitabxanası vasitəsilə dəstəkləyir. Söhbətlər, real vaxt bildirişləri və birgə redaktə üçün WebSocket optimal nəqliyyatdır. FastAPI PostgreSQL ilə asinxron iş üçün asyncpg və keşləmə üçün aioredis istifadə edir.
Python sürətli prototipləşdirmə üçün əvəzolunmazdır. Tərtibatçı Flask-da API prototipini 15 dəqiqəyə yaza bilər və ideyanı Kotlin/Swift-də istehsalata tətbiq etməzdən əvvəl istifadəçilər üzərində sınaqdan keçirə bilər. Prototip mərhələsində səhvin dəyəri minimaldır və fərziyyənin yoxlanılması vaxtı həftələrdən saatlara qədər azalır.
Prototipləşdirmə vasitələri: Flask (minimal REST), Streamlit (panel lövhələri), Jupyter Notebooks (məlumat analizi), Flet və Kivy (mobil MVP-lər). Python prototipi tez-tez istehsalat tətbiqi üçün spesifikasiyaya çevrilir: məlumat tipləri, biznes məntiqi və testlər Kotlin və ya Swift-ə köçürülür.
Python minlərlə istifadəçinin simulyasiyası üçün Locust freymvorku vasitəsilə mobil API-nin yük testi üçün istifadə olunur. Locust skripti istifadəçi davranış ssenarisini təsvir edir və veb interfeysi RPS, gecikmələr və persentilləri göstərir.
from locust import HttpUser, task, between
class MobileApiUser(HttpUser):
wait_time = between(1, 5)
@task(2)
def get_posts(self):
self.client.get("/api/v1/posts?page=1")
@task(1)
def create_post(self):
self.client.post("/api/v1/posts", json={
"title": "Test",
"body": "Content"
})@task(2) çəkini göstərir — GET /posts sorğusu POST /posts-dan iki dəfə tez-tez yerinə yetirilir. wait_time sorğular arasında 1–5 saniyəlik fasiləni simulyasiya edir. Locust əmr sətrindən işə salınır və nəticələri 8089 portunda veb interfeysi vasitəsilə real vaxtda göstərir.
Python və mobil inkişafın yerli dilləri müxtəlif vəzifələri həll edir. Kotlin və Swift — UI, naviqasiya və platforma API-yə birbaşa giriş üçün. Python — avtomatlaşdırma, AI/ML, server məntiqi və prototipləşdirmə üçün. Əsas parametrlərə görə müqayisə edək.
| Meyar | Python | Kotlin / Swift |
|---|---|---|
| UI tətbiqi | Xeyr (Kivy — niş) | Əsas təyinat |
| Qurma avtomatlaşdırması | Əsas vasitə | Nadir |
| AI/ML öyrənməsi | Sənayenin əsas dili | Yalnız inferensiya |
| Server backend | Django, FastAPI, Flask | Ktor, Vapor (az populyar) |
| İnkişaf sürəti | Yüksək (az kod) | Orta |
| Performans | Aşağı (interpretasiya) | Yüksək (JIT/yerli) |
| Cihaz API-yə giriş | Chaquopy/BeeWare vasitəsilə | Birbaşa (100% API) |
Optimal arxitektura: Python AI/modellərin öyrədilməsi, CI/CD skriptləri və server hissəsi üçün, Kotlin/Swift UI və yerli inteqrasiya üçün.
Birinci səhv — yanlış Python versiyasından istifadə. macOS-da Python 3.9 əvvəlcədən quraşdırılmışdır, lakin avtomatlaşdırma skriptləri üçün pyenv və ya .python-version vasitəsilə təyin edilmiş versiya lazımdır. 3.9 və 3.12 arasındakı fərq sintaksisi poza bilər (məsələn, match-case yalnız 3.10-dan etibarən mövcuddur).
İkinci tipik səhv — virtual mühitin nəzərə alınmaması. Python asılılıqları qlobal olaraq layihələr arasında ziddiyyət təşkil edir. İzolyasiya üçün venv və ya poetry istifadə edin. Qurmaların təkrarlanması üçün requirements.txt və ya pyproject.toml faylı repositoriyada olmalıdır.
Səhv idarəetməsinin olmaması — üçüncü geniş yayılmış problem. Fayl olmadıqda və ya şəbəkə xətası baş verdikdə çökən skript bütün CI/CD pipeline-nı dayandırır. try-except-finally, logging modulu vasitəsilə jurnallaşdırma və xəta zamanı sıfırdan fərqli kod (sys.exit(1)) qaytarma istifadə edin.
Python 2 və Python 3 sintaksisinin qarışdırılması — daha bir səhv. Mötərizəsiz print, köhnə except Exception, e və xrange Python 2-də işləyirdi, lakin Python 3-də işləmir. Kodu həmişə flake8 və mypy vasitəsilə statik tip analizi üçün yoxlayın.
# Ən yaxşı təcrübə: avtomatlaşdırma skriptində səhv idarəetməsi
import sys
import logging
from pathlib import Path
logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
log = logging.getLogger(__name__)
def build_apk(project_dir: str) -> bool:
path = Path(project_dir)
if not path.exists():
log.error(f"Directory {project_dir} not found")
return False
try:
# burada qurma əmri
log.info("Build started")
return True
except Exception as e:
log.exception(f"Build failed: {e}")
return False
if __name__ == "__main__":
success = build_apk("android/app")
sys.exit(0 if success else 1)Tez-tez verilən suallar
Bəli, Kivy, BeeWare və Chaquopy (Android üçün) freymvorkları vasitəsilə. Lakin Kotlin/Swift-də yerli tətbiqlər daha sürətli işləyir və platforma API-yə tam giriş təmin edir. Python adətən prototipləşdirmə və köməkçi vasitələr üçün istifadə olunur.
Python IPA/APK qurulmasını, test hesabatlarının yaradılmasını, jurnalların işlənməsini, ekran ölçülərinin dəyişdirilməsini, resursların çevrilməsini və Fastlane python-plaginləri vasitəsilə Firebase App Distribution-a yerləşdirilməsini avtomatlaşdırır.
Modellər Python-da (TensorFlow, PyTorch) öyrədilir, sonra cihazda inferensiya üçün TFLite və ya Core ML-ə çevrilir. Kotlin/Swift-də yerli ML kitabxanaları hazır modeli yükləyir, Python isə öyrənmə və ixraca cavabdehdir.
Mobil backend üçün Python (Django/FastAPI) əla seçimdir. İnkişafda daha sürətlidir və zəngin kitabxana ekosisteminə malikdir. Kotlin (Ktor) və Swift (Vapor) daha yaxşı performans və tip təhlükəsizliyi təmin edir.
Python interpretasiya olunan dil kimi C++ və Kotlin-dən yavaşdır. Lakin qurma skriptləri, kod yaradılması və prototipləşdirmə üçün Python-un sürəti kritik deyil. AI/ML üçün modellərin öyrədilməsi cihazda deyil, GPU serverlərində aparılır.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun