ข้ามไปยังเนื้อหา

Python 101 — พื้นฐาน

ถ้าคุณเคยส่งงาน TypeScript ขึ้น production มาแล้ว คุณรู้จัก Python มากกว่าที่คิด เพราะแกนกลางของทั้งสองภาษาเป็น dynamically typed เหมือนกัน (TypeScript แปะเลเยอร์ type ตอน compile-time ส่วน Python 3 แปะ hint แบบ optional) ใช้ garbage collection เหมือนกัน และเน้น syntax ที่สื่อความหมายมากกว่าพิธีรีตองเหมือนกัน

สิ่งที่ต้องปรับมุมมองจริง ๆ เป็นเรื่องผิวเผินเสียส่วนใหญ่ คือ indentation เข้ามาแทนปีกกา ส่วน syntactic sugar หลายตัวของ JavaScript ก็มีเวอร์ชัน Python ที่สะอาดกว่ารออยู่

โมดูลนี้มีเก้าบทเรียน แต่ละบทโยงกลับไปหาโค้ดที่คุณรู้จักดีอยู่แล้ว เรียนจบแล้วคุณจะอ่านโปรเจกต์จริง เขียนสคริปต์ และสร้าง REST API ด้วย FastAPI ได้

ลองชิมรสชาติแบบเร็ว ๆ: โปรแกรมเดียวกันในทั้งสองภาษา

หัวข้อที่มีชื่อว่า “ลองชิมรสชาติแบบเร็ว ๆ: โปรแกรมเดียวกันในทั้งสองภาษา”

โปรแกรมเล็ก ๆ ตัวนี้ filter รายชื่อแล้วทักทาย เขียนด้วย TypeScript ก่อน แล้วตามด้วย Python ตรรกะเดียวกัน ผลลัพธ์เดียวกัน ต่างกันแค่ syntax

TypeScript
const names: string[] = ["Alice", "Bob", "Carol", "Dave"];
const short = names.filter((n) => n.length <= 4);
for (const name of short) {
console.log(`Hello, ${name}!`);
}
// Hello, Bob!
// Hello, Dave!
Python
names: list[str] = ["Alice", "Bob", "Carol", "Dave"]
short = [n for n in names if len(n) <= 4]
for name in short:
print(f"Hello, {name}!")
# Hello, Bob!
# Hello, Dave!
names: list[str] = ["Alice", "Bob", "Carol", "Dave"]
short = [n for n in names if len(n) <= 4]
for name in short:
print(f"Hello, {name}!")
บทเรียนสิ่งที่คุณรู้อยู่แล้ว (TS)สิ่งที่คุณจะได้เรียน (Python)
Variableslet / const + static typesDynamic typing, type hints, ค่าคงที่แบบ UPPER_CASE
FunctionsArrow & functiondef, default args, keyword args, *args/**kwargs
Control Flowif/else, for, switchif/elif, for...in, match/case
CollectionsArray, object, Map, Setlist, tuple, dict, set, slicing
Classesclass, constructor, thisclass, __init__, self, dunders
ModulesESM import/export, npmimport, from ... import, pip
Errorstry/catch/finallytry/except/else/finally, raise
None & Truthinessnull, undefined, ค่า falsyNone, is None, truthiness ของ Python
อะไรเข้ามาแทนปีกกาในการกำหนดบล็อกโค้ดใน Python?
Type hints ของ Python (เช่น `name: str`) มีผลบังคับตอนไหน?
โครงสร้างใดของ Python ที่ใกล้เคียงที่สุดกับ `Array.filter()` แบบบรรทัดเดียวของ TypeScript?