Modules & Packages
Modules: แนวคิดที่คุ้นเคย แต่ syntax เรียบง่ายกว่า
หัวข้อที่มีชื่อว่า “Modules: แนวคิดที่คุ้นเคย แต่ syntax เรียบง่ายกว่า”ระบบโมดูลของ Python มีแนวคิดเหมือนกับ ESM ทุกประการ: ทุกไฟล์ .py คือหนึ่งโมดูล คุณ import จากไฟล์อื่นหรือจาก package ที่ติดตั้งไว้ และตัวจัดการ package (pip) ดูแล dependency จากภายนอก syntax นั้นสะอาดกว่า — ไม่มีคีย์เวิร์ด export ไม่มีการแยกแยะระหว่าง default กับ named export
การ import โมดูล
หัวข้อที่มีชื่อว่า “การ import โมดูล”// TypeScript (ESM)import * as fs from "fs";import { join, dirname } from "path";import axios from "axios"; // default export from npm
// Named import with aliasimport { readFileSync as readFile } from "fs";
console.log(join("src", "main.ts"));# Pythonimport os # import whole modulefrom os.path import join, dirname # import specific namesimport math as m # import with aliasfrom math import sqrt, pi # import names directly
print(join("src", "main.py"))print(m.floor(3.7))print(sqrt(16))Packages เทียบกับ modules
หัวข้อที่มีชื่อว่า “Packages เทียบกับ modules”ใน Python:
- module คือไฟล์
.pyไฟล์เดียว - package คือไดเรกทอรีที่มีไฟล์
__init__.py(Python 3.3+ ยังรองรับ “namespace packages” ที่ไม่มีไฟล์นี้ด้วย)
// TypeScript project structure// src/// utils/// index.ts ← barrel export// string.ts// number.ts// main.ts
// main.tsimport { formatDate } from "./utils";import { capitalize } from "./utils/string";# Python package structure# src/# utils/# __init__.py ← marks it as a package# string_utils.py# number_utils.py# main.py
# main.pyfrom utils import format_date # from __init__.pyfrom utils.string_utils import capitalizepip — npm ของ Python
หัวข้อที่มีชื่อว่า “pip — npm ของ Python”pip คือตัวติดตั้ง package มาตรฐาน สิ่งที่เทียบเท่า package.json ในระบบนิเวศ Python คือ requirements.txt (แบบง่าย) หรือ pyproject.toml (แบบสมัยใหม่)
# npm / Node.js workflow# package.json declares dependencies
npm install # install all depsnpm install express # add a packagenpm install -D jest # add dev dependency
# import in codeimport express from "express";# pip / Python workflow# requirements.txt declares dependencies
pip install -r requirements.txt # install allpip install fastapi # add a packagepip install pytest --dev # dev dependency
# requirements.txt# fastapi==0.110.0# uvicorn==0.27.0# pytest==7.4.0
# Modern: use pyproject.toml + pip install -e .Standard library — มาพร้อมทุกอย่างในตัว
หัวข้อที่มีชื่อว่า “Standard library — มาพร้อมทุกอย่างในตัว”Python มาพร้อม standard library ที่อุดมสมบูรณ์ หลายอย่างที่คุณต้องพึ่ง npm นั้น Python มีให้ในตัวอยู่แล้ว:
| Python stdlib | สิ่งที่เทียบเท่าใน npm |
|---|---|
json | JSON.parse / JSON.stringify |
os, pathlib | path, fs |
datetime | date-fns, dayjs |
re | รูปแบบ regexp |
collections | โครงสร้างข้อมูลของ lodash |
itertools | ตัวช่วยวนซ้ำของ lodash |
http.server | express (พื้นฐานมาก) |
unittest | jest (พื้นฐาน) |
ลองเล่นดู
หัวข้อที่มีชื่อว่า “ลองเล่นดู”import osimport mathfrom collections import Counter
# os — path manipulationpath = os.path.join("src", "utils", "main.py")print(f"Path: {path}")
# math — built-in math functionsprint(f"sqrt(144) = {math.sqrt(144)}")print(f"pi = {math.pi:.4f}")print(f"ceil(2.3) = {math.ceil(2.3)}")
# collections.Counter — frequency countingwords = ["apple", "banana", "apple", "cherry", "banana", "apple"]freq = Counter(words)print(f"Word counts: {dict(freq)}")print(f"Most common: {freq.most_common(2)}")Loading Python runtime (first run only)…