บทเรียนขั้นกลาง¶
เรียนรู้การใช้งานภาษาปิยะธอนในระดับที่สูงขึ้น รวมถึงคลาส การจัดการข้อผิดพลาด และการทำงานกับไฟล์
ชั้นและวัตถุ¶
การสร้างชั้น (Class)¶
ชั้น นักเรียน:
นิยาม __เริ่มต้น__(ตัว, ชื่อ, อายุ):
ตัว.ชื่อ = ชื่อ
ตัว.อายุ = อายุ
นิยาม แนะนำตัว(ตัว):
พิมพ์(f"สวัสดี ผมชื่อ {ตัว.ชื่อ} อายุ {ตัว.อายุ} ปี")
# สร้างวัตถุจากชั้น
สมชาย = นักเรียน("สมชาย", 15)
สมชาย.แนะนำตัว()
การสืบทอด (Inheritances)¶
ชั้น บุคคล:
นิยาม __เริ่มต้น__(ตัว, ชื่อ):
ตัว.ชื่อ = ชื่อ
ชั้น นักเรียน(บุคคล):
นิยาม __เริ่มต้น__(ตัว, ชื่อ, ระดับชั้น):
คลาสแม่.__เริ่มต้น__(ตัว, ชื่อ)
ตัว.ระดับชั้น = ระดับชั้น
คุณสมบัติ (Properties)¶
ชั้น บัญชีธนาคาร:
นิยาม __เริ่มต้น__(ตัว):
ตัว._ยอดเงิน = 0
@คุณสมบัติ
นิยาม ยอดเงิน(ตัว):
คืนค่า ตัว._ยอดเงิน
@ยอดเงิน.setter
นิยาม ยอดเงิน(ตัว, จำนวน):
ถ้า จำนวน >= 0:
ตัว._ยอดเงิน = จำนวน
อื่น:
ยก ValueError("ยอดเงินต้องไม่ติดลบ")
การจัดการข้อผิดพลาด¶
การใช้ ลอง-ยกเว้น¶
ลอง:
ไฟล์ = เปิด("ข้อมูล.txt", "r", encoding="utf-8")
ข้อมูล = ไฟล์.read()
ยกเว้น FileNotFoundError:
พิมพ์("ไม่พบไฟล์")
ยกเว้น PermissionError:
พิมพ์("ไม่มีสิทธิ์เข้าถึงไฟล์")
สุดท้าย:
ไฟล์.close()
การสร้างข้อผิดพลาดเอง¶
ชั้น ข้อผิดพลาดอายุ(Exception):
ผ่าน
นิยาม ตรวจสอบอายุ(อายุ):
ถ้า อายุ < 0:
ยก ข้อผิดพลาดอายุ("อายุต้องไม่ติดลบ")
คืนค่า จริง
ตัวจัดการบริบท (Context Managers)¶
ชั้น จัดการไฟล์:
นิยาม __เริ่มต้น__(ตัว, ชื่อไฟล์, โหมด):
ตัว.ชื่อไฟล์ = ชื่อไฟล์
ตัว.โหมด = โหมด
นิยาม __เข้า__(ตัว):
ตัว.ไฟล์ = เปิด(ตัว.ชื่อไฟล์, ตัว.โหมด)
คืนค่า ตัว.ไฟล์
นิยาม __ออก__(ตัว, ชนิด, ค่า, traceback):
ตัว.ไฟล์.close()
# การใช้งาน
ด้วย จัดการไฟล์("ข้อมูล.txt", "r") เป็น ไฟล์:
ข้อมูล = ไฟล์.read()
การทำงานกับไฟล์¶
การอ่านและเขียนไฟล์¶
# การเขียนไฟล์
ด้วย เปิด("บันทึก.txt", "w", encoding="utf-8") เป็น ไฟล์:
ไฟล์.write("สวัสดีชาวโลก\n")
ไฟล์.write("นี่คือบรรทัดที่สอง")
# การอ่านไฟล์
ด้วย เปิด("บันทึก.txt", "r", encoding="utf-8") เป็น ไฟล์:
สำหรับ บรรทัด ใน ไฟล์:
พิมพ์(บรรทัด.strip())
การทำงานกับ CSV¶
นำเข้า csv
# เขียนไฟล์ CSV
ด้วย เปิด("ข้อมูล.csv", "w", newline="", encoding="utf-8") เป็น ไฟล์:
เขียน = csv.writer(ไฟล์)
เขียน.writerow(["ชื่อ", "อายุ", "คะแนน"])
เขียน.writerow(["สมชาย", 15, 85])
# อ่านไฟล์ CSV
ด้วย เปิด("ข้อมูล.csv", "r", encoding="utf-8") เป็น ไฟล์:
อ่าน = csv.DictReader(ไฟล์)
สำหรับ แถว ใน อ่าน:
พิมพ์(f"ชื่อ: {แถว['ชื่อ']}, อายุ: {แถว['อายุ']}")
การทำงานกับโมดูล¶
การสร้างโมดูล¶
# ไฟล์: คำนวณ.pi
นิยาม บวก(a, b):
คืนค่า a + b
นิยาม ลบ(a, b):
คืนค่า a - b
_ค่าลับ = "นี่เป็นตัวแปรภายใน"
การใช้งานโมดูล¶
# นำเข้าทั้งโมดูล
นำเข้า คำนวณ
ผลบวก = คำนวณ.บวก(5, 3)
# นำเข้าบางฟังก์ชัน
จาก คำนวณ นำเข้า ลบ
ผลลบ = ลบ(10, 7)