การเขียนโปรแกรม

คู่มือสำหรับผู้เริ่มต้นใช้งาน Ultimate Python

30 ตุลาคม 2564

สารบัญ

  • การตั้งค่าสภาพแวดล้อม
    • การตั้งค่าสภาพแวดล้อมท้องถิ่น
    • วิธีรับ Python
    • วิธีการติดตั้ง Python
    • การติดตั้ง Windows
    • การติดตั้ง Unix/Linux
    • การติดตั้ง MAC
    • การตั้งค่าเส้นทางสำหรับ Python
    • การตั้งค่าพาธสำหรับ Unix/Linux
    • การตั้งค่าพาธสำหรับ Windows
  • ตัวแปรสภาพแวดล้อม Python
    • รัน Python
  • ไวยากรณ์พื้นฐาน
    • ตัวระบุ Python
    • คำสั่งหลาม
    • เยื้องใน Python
    • ความคิดเห็นใน Python
    • รับอินพุต
    • แสดงผลลัพธ์
  • ประเภทตัวแปร
    • การกำหนดค่าให้กับตัวแปร
    • ประเภทข้อมูลหลาม
    • เครื่องสาย
    • ทูเปิลส์
    • รายการ
    • ตัวเลข
  • ตัวดำเนินการพื้นฐาน
    • ผู้ปฏิบัติงานที่ได้รับมอบหมาย
    • ตัวดำเนินการระดับบิต
    • ตัวดำเนินการตรรกะ
    • ตัวดำเนินการเลขคณิต
    • ตัวดำเนินการเปรียบเทียบ
    • ตัวดำเนินการข้อมูลประจำตัว
    • ผู้ประกอบการสมาชิก
  • การตัดสินใจ
    • ถ้าคำสั่ง
    • if-else
    • ซ้อนกัน if
    • If-elif-else-บันได
    • ชวเลข if คำสั่ง
    • คำสั่ง if-else แบบย่อ
  • ลูป
    • ในขณะที่ลูป
    • สำหรับวง
    • ลูปซ้อน
    • คำสั่งควบคุมวง
    • ดำเนินการต่อคำสั่ง
    • คำสั่งหยุด
    • ใบแจ้งยอด
  • ตัวเลข
    • การแปลงประเภทตัวเลข
    • ฟังก์ชันตัวเลขสุ่ม
    • ฟังก์ชันตรีโกณมิติ
    • ฟังก์ชันทางคณิตศาสตร์
  • เครื่องสาย
    • การสร้างสตริง
    • ตัวดำเนินการพิเศษสตริง
    • ตัวดำเนินการจัดรูปแบบสตริง
    • ตัวละครหนี
    • สร้างขึ้นในวิธีการสตริง
  • ทูเปิลส์
    • การเข้าถึงค่าในทูเปิลส์
    • กำลังอัปเดต tuples
    • ตัวดำเนินการทูเพิลพื้นฐาน
    • สร้างขึ้นในฟังก์ชันทูเพิล
    • การจัดทำดัชนีและการแบ่งส่วน
    • การลบทูเพิล
  • รายการ
    • การเข้าถึงค่าในรายการ
    • กำลังอัปเดตรายการ
    • ตัวดำเนินการรายการพื้นฐาน
    • ฟังก์ชันและเมธอดของรายการในตัว
    • การจัดทำดัชนีและการแบ่งส่วน
    • ลบรายการองค์ประกอบ
  • พจนานุกรม
    • การสร้างพจนานุกรม
    • การเพิ่มองค์ประกอบในพจนานุกรม
    • การลบองค์ประกอบออกจากพจนานุกรม
    • วิธีพจนานุกรม Python
  • วันและเวลา
    • เวลาทูเปิล
    • โมดูลเวลา
    • โมดูลปฏิทิน
  • ฟังก์ชั่น
    • วิธีการกำหนดฟังก์ชัน
    • เรียกฟังก์ชัน
    • ผ่านโดยการอ้างอิง
    • ผ่านค่า
    • อาร์กิวเมนต์ของฟังก์ชัน
    • อาร์กิวเมนต์ความยาวผันแปร
    • อาร์กิวเมนต์ที่จำเป็น
    • อาร์กิวเมนต์เริ่มต้น
    • อาร์กิวเมนต์ของคีย์เวิร์ด
    • ฟังก์ชั่นนิรนาม
  • โมดูล
    • ใบแจ้งยอดการนำเข้า
    • คำสั่งจากการนำเข้า
    • จากการนำเข้า * Statement
    • ค้นหาโมดูล
    • locals() และ globals() ฟังก์ชั่น
    • เนมสเปซและการกำหนดขอบเขต
    • dir( ) ฟังก์ชัน
    • ฟังก์ชันรีโหลด()
  • ไฟล์ I / O
    • การเปิดไฟล์
    • คุณสมบัติของวัตถุไฟล์
    • การปิดไฟล์
    • พร้อมถ้อยแถลง
    • วิธีการเขียน
    • วิธีการอ่าน
    • เปลี่ยนชื่อ() method
    • วิธีการลบ ()
    • ตำแหน่งไฟล์
  • ข้อยกเว้น
    • ข้อยกเว้นคืออะไร?
    • การจัดการข้อยกเว้น
    • ทำให้เกิดข้อยกเว้น
    • รายการข้อยกเว้นมาตรฐาน
    • ผู้ใช้กำหนดข้อยกเว้น
    • การยืนยันใน Python
  • ชั้นเรียนและวัตถุ
  • การเขียนโปรแกรม CGI
    • การท่องเว็บ
    • ส่วนหัว HTTP
    • ตัวแปรสภาพแวดล้อม CGI
    • GET วิธี
    • วิธีโพสต์
    • การใช้คุกกี้ใน CGI
    • มันทำงานอย่างไร?
  • การเข้าถึงฐานข้อมูล MySQL
    • การสร้างตารางฐานข้อมูล
    • INSERT การทำงาน
    • อ่านการดำเนินการ
    • อัพเดทการทำงาน
    • ลบการดำเนินการ
    • การทำธุรกรรม
    • COMMIT Operation
    • การดำเนินการย้อนกลับ
    • ยกเลิกการเชื่อมต่อฐานข้อมูล
    • การจัดการข้อผิดพลาด
  • เครือข่าย
    • ซ็อกเก็ตคืออะไร?
    • โมดูลซ็อกเก็ต
    • โมดูลอินเทอร์เน็ต Python
  • กำลังส่งอีเมล
    • การส่งอีเมล HTML โดยใช้ Python
    • การส่งไฟล์แนบเป็นอีเมล
  • การเขียนโปรแกรมมัลติเธรด
    • ตั้งกระทู้ใหม่
    • โมดูลเกลียว
    • การซิงโครไนซ์เธรด
    • คิวลำดับความสำคัญแบบมัลติเธรด
  • การประมวลผล XML
    • XML คืออะไร?
    • สถาปัตยกรรม XML Parser และ API
    • การแยกวิเคราะห์ XML ด้วย SAX APIs
      • เมธอด make_parser
      • วิธีการแยกวิเคราะห์
      • วิธี parseString
  • การเขียนโปรแกรม GUI
    • วิดเจ็ต Tkinter
  • การจัดการเรขาคณิต
  • บทความแนะนำ

ชั้นเรียนและวัตถุ

Python เป็นภาษาเชิงวัตถุเพราะมันมีอยู่แล้ว ด้วยเหตุนี้ การใช้และการสร้างคลาสและอ็อบเจ็กต์จึงกลายเป็นเรื่องง่ายขึ้น บทนี้จะช่วยคุณในการเป็นผู้เชี่ยวชาญในการใช้การสนับสนุนการเขียนโปรแกรมเชิงวัตถุของ Python

หากคุณไม่มีความรู้เพียงพอเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุ นี่เป็นสิ่งเล็กน้อยที่จะเริ่มต้น

    ระดับ− มันคือต้นแบบที่ผู้ใช้กำหนดสำหรับออบเจกต์ที่กำหนดชุดของคุณลักษณะที่กำหนดลักษณะของออบเจกต์ใดๆ ของคลาส ตัวแปรคลาสและตัวแปรและเมธอดของอินสแตนซ์ เข้าถึงได้โดยใช้เครื่องหมายจุดวัตถุ− เป็นตัวอย่างของโครงสร้างข้อมูลที่กำหนดโดยคลาสของมัน วัตถุประกอบด้วยทั้งตัวแปรคลาสและตัวแปรอินสแตนซ์ตัวแปรคลาส− เป็นตัวแปรที่ใช้ร่วมกันโดยอินสแตนซ์ทั้งหมดของคลาส ตัวแปรคลาสถูกกำหนดไว้ภายในคลาส แต่อยู่นอกเมธอดของคลาสใดๆ ตัวแปรคลาสจะไม่ถูกใช้เป็นตัวแปรอินสแตนซ์ที่ใช้บ่อยสมาชิกข้อมูล− เป็นตัวแปรอินสแตนซ์ที่เก็บข้อมูลที่เกี่ยวข้องกับคลาสและอ็อบเจ็กต์ของคลาสตัวแปรอินสแตนซ์− เป็นตัวแปรที่กำหนดโดยปกติภายในเมธอดและเป็นของอินสแตนซ์ปัจจุบันของคลาสฟังก์ชั่นโอเวอร์โหลด− การกำหนดพฤติกรรมอย่างน้อยหนึ่งอย่างให้กับหน้าที่เฉพาะ การดำเนินการจะแตกต่างกันไปตามประเภทของอ็อบเจ็กต์หรืออาร์กิวเมนต์ที่เกี่ยวข้องตัวดำเนินการโอเวอร์โหลด− การกำหนดฟังก์ชันอย่างน้อยหนึ่งฟังก์ชันให้กับโอเปอเรเตอร์เฉพาะมรดก− เป็นการถ่ายโอนคุณสมบัติของคลาสไปยังคลาสอื่นที่ได้รับมาจากคลาสนั้นวิธี− เป็นฟังก์ชันชนิดพิเศษที่กำหนดไว้ในนิยามคลาส

การสร้างคลาส

คลาสสร้างนิยามคลาสใหม่ ชื่อของคลาสตามด้วยคลาสคีย์เวิร์ดตามด้วยโคลอน

SYNTAX

|_+_|
  • คลาสประกอบด้วยสตริงเอกสาร ซึ่งเข้าถึงได้ผ่าน ClassName.__doc__
  • class_suite ประกอบด้วยคำสั่งส่วนประกอบที่กำหนดสมาชิกของคลาส คุณลักษณะของข้อมูล และฟังก์ชัน
img 617dd27284418

คลาส Objects

วัตถุเป็นตัวอย่างของคลาส คลาสเป็นเหมือนพิมพ์เขียวในขณะที่เป็นสำเนาของคลาสที่มีค่าจริง

img 617dd272d3ac5

ผลลัพธ์

img 617dd273361bc

การเข้าถึงคุณสมบัติ

คุณสามารถเข้าถึงแอตทริบิวต์ของวัตถุได้โดยใช้ตัวดำเนินการจุดกับวัตถุ

  • getattr(obj, name[, default]) - ใช้เพื่อเข้าถึงแอตทริบิวต์ของวัตถุ
  • hasattr(obj,name) - ใช้เพื่อตรวจสอบว่าแอตทริบิวต์มีอยู่หรือไม่
  • setattr(obj,name,value) - ใช้สำหรับตั้งค่าแอตทริบิวต์ หากไม่มีแอตทริบิวต์ก็จะถูกสร้างขึ้น
  • delattr(obj, name) −มันถูกใช้เพื่อลบแอตทริบิวต์

แอตทริบิวต์คลาสที่สร้างขึ้น

ทุกคลาสของ Python จะติดตามแอตทริบิวต์ที่สร้างขึ้นและเข้าถึงได้โดยใช้ตัวดำเนินการ dot เช่นเดียวกับแอตทริบิวต์อื่น ๆ −

    __dict__- เป็นพจนานุกรมที่มีเนมสเปซของคลาส__doc__− เป็นสตริงเอกสารของคลาสหรือไม่มี หากไม่ได้กำหนดไว้__ชื่อ__- ชื่อคลาส__โมดูล__- เป็นชื่อโมดูลที่กำหนดคลาส คุณลักษณะนี้คือ __main__ ในโหมดโต้ตอบ__เบส__− ทูเพิลว่างที่มีคลาสฐาน ตามลำดับที่เกิดขึ้นในรายการคลาสฐาน

เก็บขยะ

Python ลบวัตถุโดยอัตโนมัติเพื่อเพิ่มพื้นที่หน่วยความจำ กระบวนการที่ python เรียกคืนบล็อกของหน่วยความจำที่ไม่ได้ใช้อีกต่อไปเป็นระยะๆ เรียกว่า Garbage Collection

ตัวรวบรวมขยะของหลามทำงานในระหว่างการดำเนินการของโปรแกรม และจะถูกทริกเกอร์เมื่อจำนวนการอ้างอิงของวัตถุถึงศูนย์

จำนวนอ้างอิงของออบเจ็กต์จะเพิ่มขึ้นเมื่อมีการกำหนดชื่อใหม่หรือใส่ไว้ในคอนเทนเนอร์ (รายการ ทูเพิล หรือพจนานุกรม) จำนวนอ้างอิงของวัตถุลดลงเมื่อลบด้วย ของ การอ้างอิงถูกกำหนดใหม่ หรือการอ้างอิงอยู่นอกขอบเขต เมื่อจำนวนการอ้างอิงของวัตถุถึงศูนย์ python จะรวบรวมโดยอัตโนมัติ

img 617dd273789c9

ผลลัพธ์

img 617dd273c29af

การสืบทอดคลาส

คุณยังสามารถสร้างคลาสโดยรับมาจากคลาสก่อนหน้าโดยกล่าวถึงคลาสพาเรนต์ในวงเล็บหลังชื่อของคลาสใหม่

คลาสย่อยสามารถสืบทอดแอตทริบิวต์ของคลาสพาเรนต์ และคุณสามารถใช้ฟีเจอร์ต่างๆ ได้เสมือนว่าถูกกำหนดไว้ในคลาสย่อย คลาสย่อยยังสามารถแทนที่เมธอดและสมาชิกข้อมูลจากพาเรนต์

SYNTAX

|_+_|

วิธีการเอาชนะ

คุณสามารถแทนที่เมธอดคลาสพาเรนต์ของคุณได้ เหตุผลในการแทนที่เมธอดของพาเรนต์เป็นเพราะคุณอาจต้องการฟังก์ชันเฉพาะหรือแตกต่างกันในคลาสย่อยของคุณ ต่อไปนี้เป็นวิธีการโอเวอร์โหลดพื้นฐานบางส่วน

ใช่ไม่ใช่ วิธี คำอธิบาย
หนึ่ง__repr__( ตัวเอง )การแสดงสตริงที่ประเมินค่าได้
สอง__del__( ตัวเอง )Destructor ลบวัตถุ
3__cmp__ ( ตัวเอง x )การเปรียบเทียบวัตถุ
4__init__ (ตัวเอง [,args…] )ตัวสร้าง (พร้อมอาร์กิวเมนต์ที่เป็นตัวเลือก)
5__str__( ตัวเอง )การแสดงสตริงที่พิมพ์ได้

นิพจน์ทั่วไป

นิพจน์ทั่วไปคือลำดับอักขระที่ไม่ซ้ำกันซึ่งช่วยให้คุณค้นหาหรือจับคู่ชุดของสตริง โดยใช้ไวยากรณ์พิเศษที่มีรูปแบบ นิพจน์ทั่วไปใช้กันอย่างแพร่หลายในโลก UNIX

โมดูล Python ให้การสนับสนุนอย่างเต็มที่สำหรับนิพจน์ทั่วไปที่เหมือน Perl ใน Python โมดูลทำให้เกิดข้อยกเว้น

ฟังก์ชั่นจับคู่

จะพยายามจับคู่รูปแบบ RE กับสตริงด้วยแฟล็กทางเลือก

SYNTAX

|_+_|
ใช่ไม่ใช่ พารามิเตอร์ คำอธิบาย
หนึ่งธงมันระบุแฟล็กต่าง ๆ โดยใช้ bitwise OR (|)
สองลวดลายเป็นนิพจน์ทั่วไปที่จะจับคู่
3สตริงเป็นสตริงที่ค้นหาเพื่อให้ตรงกับรูปแบบที่จุดเริ่มต้นของสตริง

ฟังก์ชั่นการค้นหา

ค้นหารูปแบบ RE ที่เกิดขึ้นครั้งแรกภายในสตริงด้วยแฟล็กทางเลือก

SYNTAX

|_+_|
ใช่ไม่ใช่ พารามิเตอร์ คำอธิบาย
หนึ่งธงมันระบุแฟล็กต่าง ๆ โดยใช้ bitwise OR (|)
สองลวดลายเป็นนิพจน์ทั่วไปที่จะจับคู่
3สตริงเป็นสตริงที่ค้นหาเพื่อให้ตรงกับรูปแบบที่จุดเริ่มต้นของสตริง

ตัวแก้ไขนิพจน์ทั่วไป

ใช่ไม่ใช่ พารามิเตอร์ คำอธิบาย
หนึ่งรี.เอ็มมันทำให้ $ ตรงกับจุดสิ้นสุดของบรรทัด และทำให้ ^ ตรงกับจุดเริ่มต้นของบรรทัดใดๆ
สองre.Lมันตีความคำตามสถานที่ปัจจุบัน การตีความส่งผลต่อกลุ่มตัวอักษรและพฤติกรรมขอบเขตของคำ
3re.Uมันแปลตัวอักษรตามชุดอักขระ Unicode ค่าสถานะมีผลต่อพฤติกรรมของ w, W, , B
4re.Xอนุญาตให้ใช้ไวยากรณ์นิพจน์ทั่วไปที่น่ารักมาก โดยจะละเว้นช่องว่างและถือว่า # เป็นเครื่องหมายความคิดเห็น
5re.Sทำให้จุดตรงกับอักขระใด ๆ รวมทั้งขึ้นบรรทัดใหม่
6อีกครั้งฉันมันทำการจับคู่ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

รูปแบบนิพจน์ทั่วไป

ใช่ไม่ใช่ ลวดลาย คำอธิบาย
หนึ่ง.ตรงกับอักขระตัวเดียวยกเว้นขึ้นบรรทัดใหม่
สองก| ขตรงกับ a หรือ b
3[…]ตรงกับอักขระตัวเดียวในวงเล็บ
4[^…]ตรงกับอักขระตัวเดียวที่ไม่อยู่ในวงเล็บ
5$ตรงกับส่วนท้ายของบรรทัด
6^ตรงกับจุดเริ่มต้นของบรรทัด
7อีกครั้ง*ตรงกับ 0 หรือมากกว่าที่เกิดขึ้นของนิพจน์ก่อนหน้า
8รี+ตรงกับนิพจน์ก่อนหน้าอย่างน้อยหนึ่งรายการ
9อีกครั้ง?ตรงกับ 0 หรือ 1 การเกิดขึ้นของนิพจน์ก่อนหน้า
10อีกครั้ง{ n}ซึ่งตรงกับจำนวนครั้งที่เกิดของนิพจน์ก่อนหน้าพอดี
สิบเอ็ดอีกครั้ง{ น, ม.}โดยจะจับคู่อย่างน้อย n และ m ครั้งของนิพจน์ก่อนหน้า
12อีกครั้ง{ น,}โดยจะจับคู่นิพจน์ก่อนหน้าอย่างน้อย n ครั้ง
13(อีกครั้ง)จัดกลุ่มนิพจน์ทั่วไปและจดจำข้อความที่ตรงกัน
14(?imx)โดยจะสลับระหว่างตัวเลือก i, m หรือ x ชั่วคราวภายในนิพจน์ทั่วไป
สิบห้า(?imx: อีกครั้ง)โดยจะสลับระหว่างตัวเลือก i, m หรือ x ชั่วคราวภายในวงเล็บ
16?: อีกครั้ง)จัดกลุ่มนิพจน์ทั่วไปโดยไม่จำข้อความที่ตรงกัน
17(?-imx)มันปิดตัวเลือก i, m หรือ x ชั่วคราวภายในนิพจน์ทั่วไป
18(?-imx: อีกครั้ง)มันปิดตัวเลือก i, m หรือ x ชั่วคราวภายในวงเล็บ
19(?#…)ความคิดเห็น
ยี่สิบ(?= อีกครั้ง)ระบุตำแหน่งโดยใช้รูปแบบ ไม่มีช่วง
ยี่สิบเอ็ด(?! อีกครั้ง)ระบุตำแหน่งโดยใช้การปฏิเสธรูปแบบ มันไม่มีช่วง
22(?> อีกครั้ง)ตรงกับรูปแบบอิสระโดยไม่ต้องย้อนรอย
23ในตรงกับอักขระคำ
24ในตรงกับอักขระที่ไม่ใช่คำ
25Sตรงกับที่ไม่ใช่ช่องว่าง
26sมันตรงกับช่องว่าง
27Dตรงกับตัวเลขที่ไม่ใช่หลัก
28dมันตรงกับตัวเลข เทียบเท่ากับ [0-9]
2910ตรงกับนิพจน์ย่อยที่จัดกลุ่มที่ n หากตรงกันแล้ว มิฉะนั้นจะหมายถึงการแสดงรหัสอักขระฐานแปด
30ถึงตรงกับจุดเริ่มต้นของสตริง
31กับตรงกับส่วนท้ายของสตริง หากมีการขึ้นบรรทัดใหม่ จะจับคู่ก่อนขึ้นบรรทัดใหม่
32กับตรงกับส่วนท้ายของสตริง
33Gตรงกับจุดที่การแข่งขันนัดสุดท้ายจบลง
3. 4 , เป็นต้นตรงกับการขึ้นบรรทัดใหม่ การขึ้นบรรทัดใหม่ แท็บ ฯลฯ
35Bตรงกับขอบเขตที่ไม่ใช่คำ
361…9ตรงกับนิพจน์ย่อยที่จัดกลุ่มที่ n
37ตรงกับแบ็คสเปซ (0x08) เมื่ออยู่ในวงเล็บ

คลาสตัวละคร

ใช่ไม่ใช่ ตัวอย่าง คำอธิบาย
หนึ่ง[เออิอุ]ตรงกับสระตัวใดตัวหนึ่ง
สอง[0-9]มันตรงกับตัวเลขใด ๆ เช่นเดียวกับ [0123456789]
3[Pp] ythonมันตรงกับ Python หรือ python
4[a-z]ตรงกับตัวอักษร ASCII ตัวพิมพ์เล็ก
5ถู [เจ้า]ตรงกับทับทิมหรือทับทิม
6[^aeiou]มันตรงกับอย่างอื่นที่ไม่ใช่สระตัวพิมพ์เล็ก
7[^0-9]ตรงกับสิ่งอื่นที่ไม่ใช่ตัวเลข
8[a-zA-Z0-9]ตรงกับข้อใดข้อหนึ่งข้างต้น
9[A-Z]ตรงกับตัวอักษร ASCII ตัวพิมพ์ใหญ่
10.ตรงกับอักขระตัวเดียวยกเว้นขึ้นบรรทัดใหม่
สิบเอ็ดในตรงกับอักขระคำ
12ในตรงกับอักขระที่ไม่ใช่คำ
13Sตรงกับที่ไม่ใช่ช่องว่าง
14sมันตรงกับช่องว่าง
สิบห้าDตรงกับตัวเลขที่ไม่ใช่หลัก
16dมันตรงกับตัวเลข เทียบเท่ากับ [0-9]

กรณีซ้ำ

ใช่ไม่ใช่ ตัวอย่าง คำอธิบาย
หนึ่งทับทิม+ตรงกับ rub บวก 1 หรือมากกว่า ys
สองทับทิม*ตรงกับ rub บวก 0 หรือมากกว่า ys
3ทับทิม?ตรงกับ rub หรือ ruby: y เป็นตัวเลือก
4d{3}ตรงกับ 3 หลักพอดี
5d{3,}ตรงกับ 3 หลักขึ้นไป
6d{3,5}ตรงกับ 3, 4 หรือ 5 หลัก

สมอ

ใช่ไม่ใช่ ตัวอย่าง คำอธิบาย
หนึ่งหลาม Zโดยจะจับคู่กับ Python ที่ส่วนท้ายของสตริง
สองPython$โดยจะจับคู่กับ Python ที่ส่วนท้ายของสตริงหรือบรรทัด
3^หลามโดยจะจับคู่ Python ที่จุดเริ่มต้นของสตริงหรือบรรทัดภายใน
4 APythonตรงกับ Python ที่จุดเริ่มต้นของสตริง
5หลาม(?=!)ตรงกับ Python หากตามด้วยเครื่องหมายอัศเจรีย์
6ไพทอน(?!!)ตรงกับ Python หากไม่ตามด้วยเครื่องหมายอัศเจรีย์
7Pythonมันจับคู่ Python ที่ขอบเขตของคำ