?? ??? Python ???: uv, Docker ? ?? ??? ???? ?????? FastAPI ?????? ??: ??? ???
Jan 17, 2025 pm 10:17 PM???? ?????? ????? ???? ??? ?????? ??? ?????. ?? ???? Python ?????? FastAPI? ?? ??? API? ??? ? ?????. ??? ??? ????? ?? ??? ???? uv
? ???????.
uv
uv
? Docker? ????? ???? uv init simple-app
?? ??? ?????. ?? ??? ?????:
<code>simple-app/ ├── .python-version ├── README.md ├── hello.py └── pyproject.toml</code>
pyproject.toml
?? ???? ?????? ????.
[project] name = "simple-app" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.11" dependencies = []
pyproject.toml
? ???? ??? ??:
dependencies = [ "fastapi[standard]=0.114.2", "python-multipart=0.0.7", "email-validator=2.1.0", "pydantic>2.0", "SQLAlchemy>2.0", "alembic=1.12.1", ] [tool.uv] dev-dependencies = [ "pytest=7.4.3", "mypy=1.8.0", "ruff=0.2.2", "pre-commit=4.0.0", ]
[tool.uv]
????? ?? ?? ???? ?? ???? ?????. uv sync
? ???? ??? ?????.
- ???
uv.lock
. - ?? ??? ????(
.venv
).uv
??? ?? Python ?????? ???????. - ???? ?????.
FastAPI
FastAPI ?????? ?? ???:
<code>recipe-app/ ├── app/ │ ├── main.py │ ├── __init__.py │ └── ... ├── .python-version ├── README.md └── pyproject.toml</code>
app/main.py
??:
from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class Hello(BaseModel): message: str @app.get("/", response_model=Hello) async def hello() -> Hello: return Hello(message="Hi, I am using FastAPI")
???? ??: uv run fastapi dev app/main.py
. ??? ??? ??? ?????.
http://ipnx.cn/link/c099034308f2a231c24281de338726c1?? ??????.
??
Dockerize? ?????. ??? ???? ??? ??? ????. Dockerfile
??:
FROM python:3.11-slim ENV PYTHONUNBUFFERED=1 COPY --from=ghcr.io/astral-sh/uv:0.5.11 /uv /uvx /bin/ ENV UV_COMPILE_BYTE=1 ENV UV_LINK_MODE=copy WORKDIR /app ENV PATH="/app/.venv/bin:$PATH" COPY ./pyproject.toml ./uv.lock ./.python-version /app/ RUN --mount=type=cache,target=/root/.cache/uv \ --mount=type=bind,source=uv.lock,target=uv.lock \ --mount=type=bind,source=pyproject.toml,target=pyproject.toml \ uv sync --frozen --no-install-project --no-dev COPY ./app /app/app RUN --mount=type=cache,target=/root/.cache/uv \ uv sync --frozen --no-dev CMD ["fastapi", "dev", "app/main.py", "--host", "0.0.0.0"]
? ?? ???? ??? ?? docker-compose.yaml
:
services: app: build: context: . dockerfile: Dockerfile working_dir: /app volumes: - ./app:/app/app ports: - "${APP_PORT:-8000}:8000" environment: - DATABASE_URL=${DATABASE_URL} depends_on: - postgres postgres: image: postgres:15 environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data volumes: postgres_data: {}
?? ??? ???? .env
??? ????. ???? ??: docker compose up --build
.
[tool.uv]
? ?? ??
[tool.uv]
? pyproject.toml
???? ?? ??? ???? ????.
- pytest: ??? ?????(???? ??? ???).
- mypy: ?? ?? ??????. ???? ??:
uv run mypy app
. - ruff: ?? ??(?? ?? ??).
- ?? ??: ?? ?? ??? ?????.
.pre-commit-config.yaml
: ???
repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 hooks: - id: check-added-large-files - id: check-toml - id: check-yaml args: - --unsafe - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.8.6 hooks: - id: ruff args: [--fix] - id: ruff-format
pyproject.toml
? mypy
? ?? ruff
??? ?????(?? ???? ??? ?). ??? Linting? ?? VS Code Ruff ??? ?????. ? ??? ?? ??? ?? ???, ?? ??, ?? ? ??? ??? ????? ??????.
? ??? ?? ??? Python ???: uv, Docker ? ?? ??? ???? ?????? FastAPI ?????? ??: ??? ???? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

???? Python ?? ?? ?????? ?? ????, "??? ?????, ?? ??"? ???? ??? ??? ??? ?? ??? ?????. 1. ???? ?? ? ??? ?? ?????. ?? ???? ?? ??? ???? ??? ? ? ????. ?? ??, Spoke () ?? ???? ??? ??? ?? ??? ?? ????? ?? ??? ??? ????. 2. ???? ?? ???? ??? ??? ?????? Draw () ???? ???? ????? ?? ???? ?? ??? ???? ??? ???? ?? ?? ?? ??? ????? ?? ?? ????? ?? ?????. 3. Python ?? ???? ???????. ?? ???? ??? ???? ?? ???? ??? ????? ??? ?? ???? ??? ???? ????. ??? ??? ??? ???? ? ??? "?? ??"??????. 4. ???? ? ???? ?? ??? ?????

?? ??? ??? ?? ? ? ?? ?? ??? ??? ?? ? ? ?? ?? ?????. 1. ?? ?? ??? ???? ??????, ??? ??? ???? ??? ?????. 2. ??? ?? ??? ?? ?? ???? ???? ??? ???? ???? ???? ? ????. 3. ?? ?? ?? ?? ?? ??? ??? ?? ?? ? ? ????? ?? ??? ????? ??????. 4. Args? *Kwargs? ???? ?? ?? ??? ?? ? ? ????? ???? ????? ?? ?????? ????? ???? ???? ?????? ???????.

???? __iter __ () ? __next __ () ???? ???? ?????. ???? ??? ? ??? ????, ?? ???? ?? ??? ??? ???? ?????. 1. ???? ?? () ?? ? ??? ??? ???? ? ?? ??? ?? ? ?? ???? ??? ????. 2. ???? ?? ??? ???? ??? ???? ???? ???? ???? ?? ???? ?????. 3. ???? ???? ?? ??? ?? ? ? ? ??? ?? ? ???????? ? ? ??? ?? ??? ??? ???? ?? ? ? ???? ??????. ?? : ??? ?? ???? ??? ???? ????. ???? ?? ?? ? ??? ?????? ???? ? ?? ?? ? ? ????.

??? ???? @ClassMethod ?????? ?? ????? ?? ? ??????. ? ?? ?? ??? ??? ?? (CLS)?? ??? ??? ?????? ???? ? ?????. ?? ????? ?? ?? ???? ??? ??? ??? ?? ????? ?? ?? ? ? ????. ?? ??, ?? ????? show_count () ???? ?? ? ?? ?? ?????. ??? ???? ?? ? ?? @ClassMethod ?????? ???? ??? ??? ???? ?? Change_var (new_value) ???? ?? ? ?? ?? ?? CLS? ???????. ??? ???? ???? ?? (?? ?? ??) ? ?? ??? (?? ?? ?? ??)? ??? ?? ??, ?? ??? ? ??? ?? ??? ?????. ???? ??? ??? ????.

API ??? ??? ??? ?? ??? ???? ???? ???? ????. 1. Apikey? ?? ??? ?? ????, ????? ?? ?? ?? URL ?? ??? ?????. 2. Basicauth? ?? ???? ??? Base64 ??? ??? ??? ??? ????? ?????. 3. OAUTH2? ?? Client_ID ? Client_Secret? ?? ??? ?? ?? ?? ??? BearEtroken? ???????. 4. ?? ??? ???? ?? ?? ?? ???? ????? ???? ?? ?? ? ????. ???, ??? ?? ??? ??? ???? ?? ??? ???? ???? ?? ?????.

Python? MagicMethods (?? Dunder ??)? ??? ??? ???? ? ???? ??? ????, ?? ??? ???? ????. 1. ??? ??, ??, ??? ?? ?? ?? ?? ??? ?? ? ? ????. 2. ???? ?? ??? ?? ??? ? ?? (__init__, __repr_, __str__), ?? ?? (__add__, __sub__, __mul__) ? ?? ?? (__eq__, ___LT__); 3. ??? ??? ? ??? ??? ??? ????? ??????. ?? ??, __repr__? ???? ??? ??? ??? ?????? ?? ???? ??? ????? ???????. 4. ???? ????? ????? ??? ??????.

pythonmanagesmemoryautomicallicallicallicallicallicallicallicallicallysingandagarbagecollector.referenceCountingTrackshowmanyvariablestrefertoanobject, whenthecountreacheszero, thememoryisfreed. ??? itcannothandlecircular -references, wheretwoobjectsferotherbuta

@property? ???? ?? ??? ??? ???? ???? ??????, ??? ??? ? ? ??? ?? ?? ?? ??? ?????. 1. @property ?????? ?? getter ???? ???? ??? ??? ????? ?? ?? ??? ?????. 2. ?? ?? ???? ?? .Setter? ???? ?? ??? ?? ? ? ????. .setter? ???? ??? ?? ?? ?????. 3. ?? ?? ??, ?? ?? ?? ?? ?? ? ?? ?? ?? ??? ??? ?? ??? ?????. 4.?? ??? ? ?? ??? ?? ??? ??? ?? ?? ?? ??? ??? ??? ??? ?????. 5. ???? ? ???? ??? ????? ???? ?? ???? ???? full_name ??? ?????.
