Python — високо нивоски интерпретирани програмски језик, познат по концизној синтакси и богатом екосистему библиотека. У мобилном развоју Python се користи за помоћне скриптове аутоматизације изградње, обуку AI/ML модела и писање серверске логике на Django или FastAPI. Према подацима PYPL (2026), Python заузима прво место у свету по популарности међу програмским језицима.
Главно
Python — интерпретирани језик са динамичком строгом типизацијом и аутоматским управљањем меморијом. Креирао га је Гвидо ван Росум 1991. године. Филозофија језика (The Zen of Python) промовише читљивост кода: „експлицитно је боље од имплицитног”, „једноставно је боље од сложеног”. Python 3.12+ подржава подударање узорака (match-case) и побољшане генерике.
Стандардна библиотека Python-а укључује модуле за рад са JSON (json), HTTP (urllib), архивама (zipfile), регуларним изразима (re) и базама података (sqlite3). Трећа страна — десетине хиљада пакета у PyPI са укупним бројем преузимања преко 500 милијарди. PyPI (Python Package Index) — највеће складиште Python пакета.
Python користи интерпретатор CPython написан у C-у. Алтернативне имплементације: PyPy (JIT компилација, 2–5 пута бржи за чисти Python), Cython (компилација Python-а у C), Numba (JIT за нумеричка израчунавања). За мобилне скриптове довољан је CPython — брзина интерпретације није критична за задатке аутоматизације.
Python 2 је престао са подршком 2020. године. Сви модерни пројекти користе Python 3. Актуелна верзија — 3.13 (2025) са побољшаним JIT компилатором и експерименталном подршком за слободне нити (free-threaded Python). За мобилни развој стабилна је верзија 3.11–3.12, компатибилна са свим главним библиотекама.
| Верзија | Година | Кључна иновација |
|---|---|---|
| Python 3.6 | 2016 | f-стрингови, назнаке типова за променљиве |
| Python 3.8 | 2019 | walrus оператор (:=), позициони параметри |
| Python 3.10 | 2021 | match-case, прецизни типови, Union оператори |
| Python 3.11 | 2022 | Убрзање CPython-а за 10–60%, групе изузетака |
| Python 3.12 | 2023 | Подршка за преоптерећење функција у типизацији |
| Python 3.13 | 2025 | JIT компилатор, free-threaded режим |
Python — главни језик за скриптове аутоматизације у мобилном развоју. Користи се за изградњу APK и IPA, обраду текстуалних ресурса, генерисање екрана из макета и деплој у продавнице апликација. Према подацима Bitrise (2025), преко 60% CI/CD пајплајнова мобилних апликација укључује Python кораке.
Најчешћи сценарио — Fastlane са Ruby-јем не покрива све потребе, а Python га допуњује: сложена логика обраде слика, рад са API-јем App Store Connect, парсирање Xcode извештаја и генерисање снимака екрана. Python скриптови се позивају кроз sh кораке у Fastfile-у или директно у GitHub Actions.
# Скрипт за аутоматски ресајз снимака екрана апликације
import os
from PIL import Image
def resize_screenshots(input_dir: str, output_dir: str, size: tuple) -> None:
"""Мења величину свих PNG снимака екрана на потребну величину продавнице."""
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))У примеру, скрипт пролази кроз све PNG датотеке у фасцикли, мења им величину на iPhone 6.5" (1242x2208) са LANCZOS филтером за најбољи квалитет. f-стринг у print-у замењује име датотеке. Овај скрипт штеди сате ручног рада при припреми продавнице.
За Android Python је користан при обради текстуалних ресурса (strings.xml), генерисању dimen датотека за различите густине екрана и конверзији векторске графике. LXML и xml.etree.ElementTree омогућавају парсирање и измену XML ресурса Android-а.
# Генерисање strings.xml из CSV датотеке са преводима
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 — главни језик за машинско учење. TensorFlow, PyTorch, scikit-learn, JAX и Hugging Face Transformers су написани за Python. Мобилни програмери користе Python за обуку модела који се затим конвертују у TFLite (Android) или Core ML (iOS) за извршавање на уређају.
TensorFlow Lite — Google-ов фрејмворк за машинско учење на уређају. Модел обучен на Python-у конвертује се у .tflite кроз TensorFlow Converter и учитава у Android апликацију преко Interpreter API-ја. За iOS постоји сличан пајплајн кроз PyTorch -> Core ML.
# Обука једноставног модела за класификацију покрета
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"])
# Конверзија у TFLite након обуке
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 модел укључује два конволуциона слоја (Conv2D) са пулингом, потпуно повезани слој (Dense) и Dropout за регуларизацију. Након конверзије, .tflite модел заузима 4–6 пута мање простора од оригиналног SavedModel-а и ради на мобилном CPU-у или GPU-у.
Модеран приступ — обука директно на уређају кроз TensorFlow Federated или MLX (Apple). Python скрипт дефинише архитектуру, а обука се одвија на корисничким подацима без слања на сервер. То повећава приватност, али је теже за имплементацију. Већина пројеката користи класични пајплајн: Python обука -> TFLite -> инференца на уређају.
Python — популаран избор за backend мобилних апликација. Django REST Framework (DRF) и FastAPI омогућавају брзо креирање REST API-ја или GraphQL сервера. Python backend обрађује захтеве од мобилних клијената, управља аутентификацијом и синхронизује податке преко WebSocket-а.
FastAPI — модеран фрејмворк са асинхроном подршком, аутоматском генерацијом OpenAPI спецификације и валидацијом кроз Pydantic. Перформансе FastAPI-ја су упоредиве са Node.js и Go — до 10 000 захтева/с на једном језгру. За мобилни backend FastAPI се бира због брзине развоја и уграђене документације.
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 модел UserCreate валидира улазне податке: username и email су обавезни стрингови, avatar_url је опционалан. Асинхрони ендпоинти (async def) не блокирају сервер док чекају базу података. Статусни код 201 се враћа при успешном креирању корисника.
Python подржава WebSocket кроз FastAPI WebSocket или библиотеку websockets. За четове, нотификације у реалном времену и заједничко уређивање, WebSocket је оптималан транспорт. FastAPI користи asyncpg за асинхрони рад са PostgreSQL и aioredis за кеширање.
Python је незаменљив за брзо прототиповање. Програмер може написати прототип API-ја на Flask-у за 15 минута и тестирати идеју на корисницима пре него што је имплементира у Kotlin/Swift-у за продукцију. Цена грешке у фази прототипа је минимална, а време провере хипотезе се смањује са недеља на сате.
Алати за прототиповање: Flask (минимални REST), Streamlit (контролне табле), Jupyter Notebooks (анализа података), Flet и Kivy (мобилни MVP-ови). Python прототип често постаје спецификација за продукциону имплементацију: типови података, пословна логика и тестови се преносе у Kotlin или Swift.
Python се користи за тестирање оптерећења мобилног API-ја кроз Locust — фрејмворк за симулацију хиљада корисника. Locust скрипт описује сценарио понашања корисника, а веб интерфејс приказује RPS, кашњења и перцентиле.
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) означава тежину — GET /posts захтев се извршава два пута чешће од POST /posts. wait_time симулира паузу од 1–5 секунди између захтева. Locust се покреће из командне линије и приказује резултате у реалном времену кроз веб интерфејс на порту 8089.
Python и изворни језици мобилног развоја решавају различите задатке. Kotlin и Swift — за UI, навигацију и директан приступ API-ју платформе. Python — за аутоматизацију, AI/ML, серверску логику и прототиповање. Упоредимо по кључним параметрима.
| Критеријум | Python | Kotlin / Swift |
|---|---|---|
| UI апликација | Не (Kivy — нишни) | Основна намена |
| Аутоматизација изградње | Главни алат | Ретко |
| AI/ML обука | Главни језик индустрије | Само инференца |
| Серверски backend | Django, FastAPI, Flask | Ktor, Vapor (мање популарни) |
| Брзина развоја | Висока (мање кода) | Средња |
| Перформансе | Ниске (интерпретација) | Високе (JIT/изворни) |
| Приступ API-ју уређаја | Кроз Chaquopy/BeeWare | Директан (100% API) |
Оптимална архитектура: Python за обуку AI модела, CI/CD скриптове и серверски део, Kotlin/Swift за UI и изворну интеграцију.
Прва грешка — коришћење погрешне верзије Python-а. На macOS је прединсталиран Python 3.9, али за скриптове аутоматизације потребна је верзија фиксирана кроз pyenv или .python-version. Разлика између 3.9 и 3.12 може сломити синтаксу (нпр. match-case је доступан само од 3.10).
Друга типична грешка — игнорисање виртуелног окружења. Python зависности глобално конфликтирају између пројеката. Користите venv или poetry за изолацију. Фајл requirements.txt или pyproject.toml треба да буде у репозиторијуму за репродуцибилност изградње.
Недостатак обраде грешака — трећи уобичајени проблем. Скрипт који пада при недостатку датотеке или мрежној грешци зауставља цео CI/CD пајплајн. Користите try-except-finally, логирање кроз модул logging и враћајте ненулти код при грешци (sys.exit(1)).
Мешање синтаксе Python 2 и Python 3 — још једна грешка. print без заграда, стари except Exception, e и xrange су радили у Python 2, али не раде у Python 3. Увек проверавајте код кроз flake8 и mypy за статичку анализу типова.
# Најбоља пракса: обрада грешака у скрипту аутоматизације
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:
# овде команда изградње
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)Често постављана питања
Да, кроз фрејмворке Kivy, BeeWare и Chaquopy (за Android). Међутим, изворне апликације на Kotlin/Swift-у раде брже и пружају пун приступ API-ју платформе. Python се обично користи за прототиповање и помоћне алате.
Python аутоматизује изградњу IPA/APK, генерисање извештаја тестирања, обраду логова, ресајз екрана, конверзију ресурса и деплој на Firebase App Distribution кроз Fastlane python-плагинове.
Модели се обучавају на Python-у (TensorFlow, PyTorch), затим конвертују у TFLite или Core ML за инференцу на уређају. Изворне ML библиотеке на Kotlin/Swift-у учитавају готов модел, а Python је одговоран за обуку и извоз.
За мобилни backend Python (Django/FastAPI) је одличан избор. Бржи је у развоју и има богат екосистем библиотека. Kotlin (Ktor) и Swift (Vapor) пружају боље перформансе и сигурност типова.
Python као интерпретирани језик је спорији од C++ и Kotlin-а. Али за скриптове изградње, генерисање кода и прототиповање брзина Python-а није критична. За AI/ML обука модела се изводи на GPU серверима, а не на уређају.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође