คำอธิบายชนิดข้อมูลเบื้องต้น
ใส่คำอธิบายชนิดให้ตัวแปร พารามิเตอร์ฟังก์ชัน และชนิดค่าที่ส่งกลับ
คำอธิบายชนิดข้อมูลเบื้องต้น เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คำอธิบายชนิดข้อมูลคืออะไร
คำอธิบายชนิดข้อมูลคือคำใบ้ที่ประกาศชนิดข้อมูลที่คาดหมายของตัวแปร พารามิเตอร์ และค่าที่ส่งกลับ คำอธิบายเหล่านี้ไม่ได้บังคับใช้ขณะทำงาน แต่เครื่องมือตรวจสอบชนิดข้อมูล เช่น mypy จะอ่านคำอธิบายเหล่านี้
def greet(name: str) -> str:
return f"Hello, {name}"
result: str = greet("Alice")
print(result)คำอธิบายชนิดของตัวแปร
ใส่คำอธิบายให้ตัวแปรระดับโมดูล ระดับคลาส หรือภายในขอบเขตของฟังก์ชันด้วยเครื่องหมายโคลอนตามด้วยชนิดข้อมูล
count: int = 0
pi: float = 3.14159
name: str = "Python"
flag: bool = True
# Annotation without assignment (declaration only)
future_value: intคำอธิบายชนิดของพารามิเตอร์ฟังก์ชัน
ใส่คำอธิบายให้พารามิเตอร์แต่ละตัวในส่วนหัวของฟังก์ชัน ใช้ -> type เพื่ออธิบายชนิดของค่าที่ส่งกลับ
def add(a: int, b: int) -> int:
return a + b
def repeat(text: str, times: int = 1) -> str:
return text * times
def no_return() -> None:
print("side effect only")ชนิดคอลเลกชันในตัว (Python 3.9 ขึ้นไป)
ตั้งแต่ Python 3.9 ขึ้นไป สามารถใช้ชนิดข้อมูลในตัวที่เขียนด้วยตัวพิมพ์เล็กเป็นชนิดทั่วไปได้โดยตรง เช่น list[int], dict[str, int] และ tuple[int, ...]
def total(numbers: list[int]) -> int:
return sum(numbers)
def config() -> dict[str, str]:
return {"host": "localhost", "port": "8080"}
def coords() -> tuple[float, float]:
return (1.0, 2.0)Optional และ Union
X | None (Python 3.10 ขึ้นไป) หรือ Optional[X] หมายความว่าค่าอาจเป็น X หรือ None ส่วน X | Y หมายความว่าค่าอาจเป็น X หรือ Y
from typing import Optional
def find(items: list[int], target: int) -> int | None:
return next((x for x in items if x == target), None)
# Older style:
# def find(...) -> Optional[int]:ชนิด Union
int | str (Python 3.10 ขึ้นไป) หรือ Union[int, str] ใช้อธิบายค่าที่อาจเป็นชนิดข้อมูลใดชนิดหนึ่งจากหลายชนิด
from typing import Union
def process(value: int | str) -> str:
return str(value)
# Older style:
# def process(value: Union[int, str]) -> str:นามแฝงชนิดข้อมูล
กำหนดนิพจน์ชนิดข้อมูลให้กับชื่อหนึ่งเพื่อสร้างนามแฝงที่นำกลับมาใช้ใหม่ได้ ซึ่งช่วยให้อ่านโค้ดได้ง่ายขึ้น
from typing import TypeAlias
Vector: TypeAlias = list[float]
Matrix: TypeAlias = list[Vector]
def dot(a: Vector, b: Vector) -> float:
return sum(x * y for x, y in zip(a, b))คำอธิบายชนิด Callable
ใช้ Callable[[arg_types], return_type] เพื่ออธิบายชนิดของฟังก์ชันที่ส่งเป็นอาร์กิวเมนต์
from typing import Callable
def apply(func: Callable[[int, int], int], x: int, y: int) -> int:
return func(x, y)
result = apply(lambda a, b: a + b, 3, 4)
print(result) # 7การใส่คำอธิบายให้ *args และ **kwargs
อธิบาย *args ด้วยชนิดของสมาชิก ไม่ใช่ชนิดทูเพิล และอธิบาย **kwargs ด้วยชนิดของค่า
def log(*messages: str, level: str = "INFO") -> None:
for msg in messages:
print(f"[{level}] {msg}")
def configure(**options: int) -> None:
for key, val in options.items():
print(f"{key}: {val}")from __future__ import annotations
เพิ่มคำสั่งนำเข้านี้ไว้ด้านบนของไฟล์ เพื่อเปิดใช้การประเมินคำอธิบายชนิดข้อมูลภายหลัง ทำให้สามารถอ้างอิงชนิดข้อมูลที่ประกาศภายหลังได้โดยไม่ต้องใส่เครื่องหมายคำพูด
from __future__ import annotations
class Node:
def __init__(self, value: int, next: Node | None = None):
self.value = value
self.next = next # forward ref to Node works hereการป้องกันด้วย TYPE_CHECKING
นำเข้าชนิดข้อมูลเฉพาะขณะตรวจสอบชนิดข้อมูล ไม่ใช่ขณะทำงาน เพื่อหลีกเลี่ยงการนำเข้าวนรอบหรือการนำเข้าที่ใช้ทรัพยากรมาก
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from mymodule import HeavyClass
def process(obj: HeavyClass) -> None:
... # HeavyClass not imported at runtimeตรวจสอบความเข้าใจอย่างรวดเร็ว
ไวยากรณ์คำอธิบายชนิดข้อมูลใดใช้ระบุว่าฟังก์ชันไม่ส่งคืนค่า
สรุป
อธิบายตัวแปรด้วย name: Type พารามิเตอร์ด้วย param: Type และค่าที่ส่งกลับด้วย -> Type ใช้ list[T], dict[K,V] (Python 3.9 ขึ้นไป), X | None (3.10 ขึ้นไป) และ from __future__ import annotations สำหรับการอ้างอิงชนิดข้อมูลที่ประกาศภายหลัง
คำถามที่พบบ่อย
บทเรียน “คำอธิบายชนิดข้อมูลเบื้องต้น” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คำอธิบายชนิดข้อมูลเบื้องต้น” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คำอธิบายชนิดข้อมูลเบื้องต้น”
ใส่คำอธิบายชนิดให้ตัวแปร พารามิเตอร์ฟังก์ชัน และชนิดค่าที่ส่งกลับ คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “คำอธิบายชนิดข้อมูลเบื้องต้น” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คำอธิบายชนิดข้อมูลเบื้องต้น
- ชนิดข้อมูลซับซ้อน: List, Dict, Optional, Union
- TypeVar คลาสทั่วไป และ Protocol
- การเรียกใช้ mypy และแก้ข้อผิดพลาดด้านชนิดข้อมูล