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

คู่มือสำหรับผู้เริ่มต้นใช้งาน 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
  • ชั้นเรียนและวัตถุ
    • การสร้างคลาส
    • คลาส Objects
    • การเข้าถึงคุณสมบัติ
    • แอตทริบิวต์คลาสที่สร้างขึ้น
    • เก็บขยะ
    • การสืบทอดคลาส
    • วิธีการเอาชนะ
    • นิพจน์ทั่วไป
    • ฟังก์ชั่นจับคู่
    • ฟังก์ชั่นการค้นหา
    • ตัวแก้ไขนิพจน์ทั่วไป
    • รูปแบบนิพจน์ทั่วไป
    • คลาสตัวละคร
    • กรณีซ้ำ
    • สมอ
  • การเขียนโปรแกรม CGI
  • การเข้าถึงฐานข้อมูล MySQL
  • เครือข่าย
    • ซ็อกเก็ตคืออะไร?
    • โมดูลซ็อกเก็ต
    • โมดูลอินเทอร์เน็ต Python
  • กำลังส่งอีเมล
    • การส่งอีเมล HTML โดยใช้ Python
    • การส่งไฟล์แนบเป็นอีเมล
  • การเขียนโปรแกรมมัลติเธรด
    • ตั้งกระทู้ใหม่
    • โมดูลเกลียว
    • การซิงโครไนซ์เธรด
    • คิวลำดับความสำคัญแบบมัลติเธรด
  • การประมวลผล XML
    • XML คืออะไร?
    • สถาปัตยกรรม XML Parser และ API
    • การแยกวิเคราะห์ XML ด้วย SAX APIs
      • เมธอด make_parser
      • วิธีการแยกวิเคราะห์
      • วิธี parseString
  • การเขียนโปรแกรม GUI
    • วิดเจ็ต Tkinter
  • การจัดการเรขาคณิต
  • บทความแนะนำ

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

CGI หรือ Common Gateway Interface คือชุดของมาตรฐานที่กำหนดวิธีการแลกเปลี่ยนข้อมูลระหว่างสคริปต์ที่กำหนดเองและเว็บเซิร์ฟเวอร์ ปัจจุบัน NCSA ยังคงรักษาข้อกำหนด CGI

การท่องเว็บ

หากคุณต้องการเข้าใจแนวคิดของ CGI นี่คือตัวอย่าง คลิกไฮเปอร์ลิงก์เพื่อเรียกดู URL หรือหน้าเว็บที่ต้องการ

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

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

ฟังก์ชันนี้เรียกว่า Common Gateway Interface หรือ CGI และแผนเรียกว่าสคริปต์ CGI โปรแกรม CGI อาจเป็น Python Script, PERL Script, Shell Script, C หรือ C++ เป็นต้น

หลาม

ส่วนหัว HTTP

เส้น ประเภทเนื้อหา:ข้อความ/html เป็นส่วนหนึ่งของส่วนหัว HTTP ที่ส่งไปยังเบราว์เซอร์เพื่อทำความเข้าใจเนื้อหา ส่วนหัว HTTP ทั้งหมดจะอยู่ในรูปแบบต่อไปนี้

ใช่ไม่ใช่ หัวข้อ คำอธิบาย
หนึ่งตำแหน่ง: URLURL ที่ส่งคืนแทนที่จะเป็น URL ที่ร้องขอ คุณสามารถใช้ฟิลด์นี้เพื่อเปลี่ยนเส้นทางคำขอไปยังไฟล์ใดก็ได้
สองชนิดของเนื้อหา:เป็นสตริง A MIME ที่กำหนดรูปแบบของไฟล์ที่ส่งคืน ตัวอย่างเช่น Content-type:text/html
3แก้ไขล่าสุด: วันที่วันที่แก้ไขทรัพยากร
4หมดอายุ: วันที่ข้อมูลจะกลายเป็นโมฆะในวันที่ เบราว์เซอร์ใช้ตัวเลือกนี้เพื่อตัดสินใจว่าจะต้องรีเฟรชหน้าเมื่อใด
5ชุดคุกกี้: สตริงตั้งคุกกี้ผ่าน สตริง
6เนื้อหาความยาว: Nกำลังส่งคืนความยาวของข้อมูล เบราว์เซอร์ใช้ค่านี้เพื่อรายงานเวลาดาวน์โหลดโดยประมาณสำหรับไฟล์

ตัวแปรสภาพแวดล้อม CGI

โปรแกรม CGI สามารถเข้าถึงตัวแปรสภาพแวดล้อมบางอย่างได้ ตัวแปรเหล่านี้มีบทบาทสำคัญในการเขียนโปรแกรม CGI

ใช่ไม่ใช่ ชื่อตัวแปร คำอธิบาย
หนึ่ง CONTENT_LENGTH ความยาวของข้อมูลแบบสอบถาม มีให้สำหรับคำขอ POST เท่านั้น
สอง ชนิดของเนื้อหา ชนิดข้อมูลของเนื้อหา ใช้เมื่อลูกค้าส่งเนื้อหาไปยังเซิร์ฟเวอร์ เช่น การอัพโหลดไฟล์
3 QUERY_STRING ข้อมูลที่เข้ารหัส URL จะถูกส่งไปพร้อมกับคำขอเมธอด GET
4 PATH_INFO เป็นเส้นทางสำหรับสคริปต์ CGI
5 HTTP_COOKIE ส่งคืนชุดคุกกี้ในรูปแบบของคู่ค่าและคีย์
6 REMOTE_HOST ชื่อเต็มของโฮสต์ที่ทำการร้องขอ หากไม่มีข้อมูล คุณสามารถใช้ REMOTE_ADDR เพื่อรับที่อยู่ IR ได้ ค่าในการรายงานเวลาดาวน์โหลดโดยประมาณสำหรับไฟล์
7 SCRIPT_FILENAME เส้นทางแบบเต็มไปยังสคริปต์ CGI
8 REQUEST_METHOD วิธีการนี้ใช้ทำการร้องขอ วิธีการทั่วไปคือ POST และ GET
9 ชื่อเซิร์ฟเวอร์ ชื่อโฮสต์ของเซิร์ฟเวอร์หรือที่อยู่ IP
10 SERVER_SOFTWARE เวอร์ชันและชื่อของซอฟต์แวร์ที่เซิร์ฟเวอร์ทำงานอยู่
สิบเอ็ด HTTP_USER_Agent ส่วนหัวคำขอของตัวแทนผู้ใช้มีข้อมูลเกี่ยวกับตัวแทนผู้ใช้ที่เป็นแหล่งที่มาของคำขอ เป็นชื่อเว็บบราวเซอร์
12 REMOTE_ADDR ที่อยู่ IP ของรีโมตโฮสต์ทำการร้องขอ มีประโยชน์สำหรับการบันทึกหรือรับรองความถูกต้อง
13 SCRIPT_NAME ชื่อของสคริปต์ CGI

GET วิธี

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

SYNTAX

|_+_| img 617dd274c490b

ผลลัพธ์

img 617dd27560edf

วิธีโพสต์

POST เป็นวิธีการร้องขอที่สนับสนุนโดย HTTP ที่ใช้โดยเวิลด์ไวด์เว็บ เมธอด POST ร้องขอให้เว็บเซิร์ฟเวอร์ยอมรับข้อมูลที่อยู่ในเนื้อหาของข้อความร้องขอ ใช้เมื่ออัปโหลดไฟล์หรือเมื่อส่งแบบฟอร์มเว็บที่กรอกแล้ว

SYNTAX

|_+_| img 617dd275b62df

การใช้คุกกี้ใน CGI

โปรโตคอล HTTP เป็นแบบไร้สัญชาติ สำหรับเว็บไซต์เชิงพาณิชย์ คุณจะต้องรักษาข้อมูลเซสชันในหน้าต่างๆ

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

มันทำงานอย่างไร?

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

การเข้าถึงฐานข้อมูล MySQL

MySQLdb เป็นอินเทอร์เฟซสำหรับเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูล MySQL จาก Python มันดำเนินการ Python ฐานข้อมูล API v2.0 และสร้างขึ้นบน MySQL C API

การสร้างตารางฐานข้อมูล

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

img 617dd276212265

INSERT การทำงาน

จำเป็นต้องมีการดำเนินการแทรกเมื่อคุณต้องการสร้างระเบียนของคุณลงในตารางฐานข้อมูล

img 617dd2767f199

อ่านการดำเนินการ

READ Operation ในฐานข้อมูลใด ๆ หมายถึงดึงข้อมูลบางส่วนจากฐานข้อมูล

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

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

อัพเดทการทำงาน

การดำเนินการ UPDATE ในฐานข้อมูลใด ๆ หมายถึงการอัปเดตระเบียนซึ่งมีอยู่ในฐานข้อมูล

ลบการดำเนินการ

การดำเนินการ DELETE จะลบบันทึกบางส่วนออกจากฐานข้อมูลของคุณ

การทำธุรกรรม

ธุรกรรมเป็นกลไกที่ช่วยให้มั่นใจถึงความสอดคล้องของข้อมูล

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

COMMIT Operation

Commit คือการดำเนินการที่ให้สัญญาณสีเขียวแก่ฐานข้อมูลเพื่อสิ้นสุดการเปลี่ยนแปลง และหลังจากการดำเนินการนี้ การเปลี่ยนแปลงจะไม่สามารถย้อนกลับได้

ตัวอย่างเช่น db.commit()

การดำเนินการย้อนกลับ

หากคุณไม่ต้องการการเปลี่ยนแปลงอย่างน้อยหนึ่งรายการและต้องการย้อนกลับการเปลี่ยนแปลงทั้งหมด คุณควรใช้การย้อนกลับ () กระบวนการ.

ตัวอย่างเช่น db.rollback()

ยกเลิกการเชื่อมต่อฐานข้อมูล

หากต้องการยกเลิกการเชื่อมต่อฐานข้อมูล คุณควรใช้เมธอด close()

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

การจัดการข้อผิดพลาด

มีหลายสาเหตุของข้อผิดพลาด ความล้มเหลวในการเชื่อมต่อ, ข้อผิดพลาดทางไวยากรณ์ในคำสั่ง SQL ที่ดำเนินการ, เป็นเพียงตัวอย่างบางส่วน

DB API กำหนดจำนวนข้อผิดพลาดที่อาจมีอยู่ในแต่ละโมดูลฐานข้อมูล ตารางต่อไปนี้แสดงรายการข้อยกเว้น

ใช่ไม่ใช่ ข้อยกเว้น คำอธิบาย
หนึ่ง ข้อผิดพลาดเป็นคลาสพื้นฐานสำหรับข้อผิดพลาด มันควรจะเป็นข้อผิดพลาดของคลาสย่อย
สอง InterfaceErrorมันถูกใช้สำหรับข้อผิดพลาดในโมดูลฐานข้อมูล ไม่ใช่ตัวฐานข้อมูลเอง มันควรจะเป็นข้อผิดพลาดของคลาสย่อย
3 คำเตือนใช้สำหรับปัญหาที่ไม่ร้ายแรง ควรคลาสย่อย StandardError
4 DataErrorเป็นคลาสย่อยของ DatabaseError ที่อ้างถึงข้อผิดพลาดในข้อมูล
5 ฐานข้อมูลผิดพลาดใช้สำหรับข้อผิดพลาดในฐานข้อมูล มันควรจะผิดพลาดคลาสย่อย
6 OperationalErrorคลาสย่อยของ DatabaseError หมายถึงข้อผิดพลาด เช่น ขาดการเชื่อมต่อกับฐานข้อมูล ข้อผิดพลาดอยู่นอกเหนือการควบคุมของ Python scripter
7 InternalErrorคลาสย่อยของ DatabaseError หมายถึงข้อผิดพลาดภายในโมดูลฐานข้อมูล เช่น เคอร์เซอร์ไม่ทำงานอีกต่อไป
8 ไม่รองรับข้อผิดพลาดคลาสย่อยของ DatabaseError หมายถึงการพยายามเรียกใช้ฟังก์ชันที่ไม่รองรับ
9 ความสมบูรณ์ข้อผิดพลาดคลาสย่อยของ DatabaseError สำหรับสถานการณ์ที่สร้างความเสียหายต่อความสมบูรณ์ของความสัมพันธ์ เช่น ข้อจำกัดเฉพาะหรือคีย์ภายนอก
10 ProgrammingErrorคลาสย่อยของ DatabaseError อ้างถึงข้อผิดพลาด เช่น ชื่อตารางที่ไม่ถูกต้อง