พื้นฐาน NamedTuple
สร้างระเบียนแบบเปลี่ยนแปลงไม่ได้ที่มีน้ำหนักเบา
พื้นฐาน NamedTuple เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
NamedTuple คืออะไร
ทูเพิลแบบมีชื่อคือทูเพิลที่ตำแหน่งต่าง ๆ มีชื่อด้วย คุณจะได้ทั้งคุณสมบัติที่มีน้ำหนักเบาและไม่เปลี่ยนแปลงของทูเพิล รวมถึงการเข้าถึงแอตทริบิวต์ที่อ่านเข้าใจง่าย เหมาะอย่างยิ่งสำหรับระเบียนขนาดเล็ก
ปัญหาของทูเพิลทั่วไป
ทูเพิลทั่วไปอ้างอิงตามตำแหน่ง คุณจึงต้องจำว่าดัชนีแต่ละตัวหมายถึงอะไร โค้ดอย่าง p[0] และ p[1] จึงผิดพลาดได้ง่าย
point = (1, 2)
print(point[0]) # x?
print(point[1]) # y?การสร้างด้วย namedtuple
ตัวสร้าง collections.namedtuple จะสร้างคลาสย่อยของทูเพิลขึ้นมาใหม่ ให้ส่งชื่อชนิดข้อมูลและชื่อฟิลด์
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p)การเข้าถึงด้วยชื่อ
ตอนนี้คุณสามารถอ่านฟิลด์ด้วยชื่อแทนดัชนี ทำให้โค้ดอธิบายความหมายของตัวเองได้
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x)
print(p.y)ยังคงเป็นทูเพิล
ทูเพิลแบบมีชื่อยังคงเป็นทูเพิลจริง ดังนั้นการเข้าถึงด้วยดัชนี การคลายแพ็ก และการวนซ้ำจึงทำงานตามปกติ
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p[0])
x, y = p
print(x, y)ความไม่เปลี่ยนแปลง
เช่นเดียวกับทูเพิลทั้งหมด ทูเพิลแบบมีชื่อจะไม่เปลี่ยนแปลง การพยายามกำหนดค่าให้ฟิลด์จะทำให้เกิด AttributeError
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
try:
p.x = 99
except AttributeError as e:
print('Cannot modify:', e)การสร้างสำเนาที่แก้ไขแล้ว
เนื่องจากคุณไม่สามารถเปลี่ยนแปลงทูเพิลได้ ให้ใช้เมธอด _replace() เพื่อสร้างอินสแตนซ์ใหม่ที่มีบางฟิลด์เปลี่ยนแปลง
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
q = p._replace(y=99)
print(p)
print(q)การแปลงเป็นดิกชันนารี
เมธอด _asdict() จะคืนค่าฟิลด์ในรูปดิกชันนารี ซึ่งมีประโยชน์สำหรับการทำให้เป็นอนุกรมหรือการบันทึกข้อมูล
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p._asdict())การตรวจสอบฟิลด์
แอตทริบิวต์ _fields จะแสดงรายการชื่อฟิลด์ เหมาะสำหรับโค้ดทั่วไปที่วนซ้ำผ่านฟิลด์ของระเบียน
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
print(Point._fields)ค่าเริ่มต้น
กำหนดค่าเริ่มต้นด้วยอาร์กิวเมนต์ defaults ค่าเริ่มต้นจะใช้กับฟิลด์ทางขวาสุด เช่นเดียวกับค่าเริ่มต้นของพารามิเตอร์ฟังก์ชัน
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y', 'z'], defaults=[0])
print(Point(1, 2))
print(Point(1, 2, 9))การคืนค่าหลายค่า
ทูเพิลแบบมีชื่อเหมาะอย่างยิ่งสำหรับค่าที่ฟังก์ชันคืนกลับมา แทนที่จะคืนทูเพิลที่ไม่มีชื่อ ให้คืนทูเพิลแบบมีชื่อเพื่อให้ผู้เรียกอ่านฟิลด์ด้วยชื่อได้
from collections import namedtuple
Stats = namedtuple('Stats', ['minimum', 'maximum'])
def analyze(nums):
return Stats(min(nums), max(nums))
r = analyze([3, 1, 9, 4])
print(r.minimum, r.maximum)ตรวจสอบอย่างรวดเร็ว
คุณจะสร้างสำเนาที่แก้ไขแล้วของอินสแตนซ์ทูเพิลแบบมีชื่อได้อย่างไร
สรุปทบทวน
คุณได้เรียนรู้การสร้างระเบียนที่มีน้ำหนักเบาและไม่เปลี่ยนแปลง
namedtupleเพิ่มชื่อฟิลด์ให้กับทูเพิล- เข้าถึงฟิลด์ด้วยชื่อหรือดัชนีได้ และยังคลายแพ็กได้ตามปกติ
- ใช้
_replace()เพื่อสร้างสำเนาที่แก้ไขแล้ว และใช้_asdict()เพื่อแปลงค่า _fieldsแสดงรายการชื่อ และdefaultsกำหนดค่าเริ่มต้น
คำถามที่พบบ่อย
บทเรียน “พื้นฐาน NamedTuple” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พื้นฐาน NamedTuple” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน NamedTuple”
สร้างระเบียนแบบเปลี่ยนแปลงไม่ได้ที่มีน้ำหนักเบา คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “พื้นฐาน NamedTuple” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คลาส Enum
- IntEnum และ Flag
- พื้นฐาน NamedTuple
- typing.NamedTuple