Python Built-in Functions That You Should Know

17-Jul-24

คัมภีร์เทพ IT

See the original english version Click here!

 

ภาษา Python มุ่งเน้นในการเพิ่มประสิทธิภาพการทำงานของ Developer ด้วยการมี Shorthand Syntax และ Feature ที่ให้ความสำคัญกับประสิทธิภาพเป็นหลัก รวมทั้งมี Inbuilt Functions ที่ถูก Import ให้ล่วงหน้าแล้ว ดังนั้น บทความนี้จะมาแนะนำ 6 Python Built-in Functions ที่คุณควรรู้จักและศึกษาไว้

1. การแปลง Number System โดยใช้ bin(), oct() และ hex()

เช่นเดียวกับภาษา Programming ยอดนิยมอื่นๆ Python Grammar ยังมีการรองรับ Native Lexical สำหรับการใช้ Binary(ฐานสอง), Octal(ฐานแปด) และHexadecimal(ฐานสิบหก) Literals โดยใช้ 0b0o และ 0x Prefixes จะเป็นอย่างไรหากคุณต้องการแปลงเลขฐานสิบ ให้เทียบเคียงเป็นเลขฐานสอง เลขฐานแปด หรือเลขฐานสิบหก โดยใช้ Number System Prefixes ข้างต้น Python มี Inbuilt Functions อยู่ 3 Functions สำหรับการแปลงระบบตัวเลขเหล่านี้:

คุณสามารถใช้ String Slicing Syntax เพื่อลบ Number System Prefixes ที่ถูกเพิ่มเข้ามาโดย Inbuilt Methods เหล่านี้ ดังที่แสดงใน Code Snippet ต่อไปนี้:

คุณสามารถใช้ Inverse Operation (การแปลง ฐานสอง/ฐานแปด/ฐานสิบหก ให้เป็น ทศนิยม) โดยการเรียก int Class Constructor เป็น Inbuilt Function:

2. การใช้ zip() สำหรับ Parallel Iteration

ในสถานการณ์การ Develop ส่วนใหญ่ เรามักจะเขียนสำหรับ Loops ที่วนซ้ำผ่าน Iterable Object ตัวอย่างเช่น คุณอาจเขียน For Loop เพื่อประมวลผลแต่ละบรรทัดของ File โดยอ่านทุกบรรทัดที่จัดเก็บไว้ใน List Instance อย่างไรก็ตาม ในบางสถานการณ์ เราจำเป็นต้อง Iterate หลาย ๆ Lists พร้อม ๆ กัน ซึ่ง Inbuilt zip() Function จะช่วยให้คุณเขียนคำสั่ง Parallel Iteration ที่อยู่ในแนวทาง Pythonic (Code ที่มี Syntax ถูกต้องรวมทั้ง Clean, อ่านเข้าใจง่าย และ Maintain ง่าย) ด้วยการ Return Elements จาก Iterable Objects หลายรายการใน Tuples

ลองดูที่ Code Snippet ต่อไปนี้:

For-Loop ด้านบนนี้ จะ Iterate ตัวเลขและตัวอักษรภาษาอังกฤษ โดยใช้ Inbuilt zip() Function และสร้าง Output ต่อไปนี้บน Terminal:

การใช้zip() Function ใน Python ซึ่งเป็นรูปภาพจากผู้เขียนบทความ

zip() Function จะยอมรับ Iterable Objects ได้ไม่จำกัดผ่าน Function Parameters ดังนั้น คุณจึงสามารถ Iterate ได้มากกว่า 2 Objects ได้ดังนี้:

ตามค่า Default แล้ว zip() Function จะทำงานแม้ว่าความยาวของ Iterable Objects จะไม่เท่ากันก็ตาม ซึ่ง Python 3.10 มีการนำเสนอ Strict Flag เพื่อแสดง Error สำหรับสถานการณ์เหล่านั้น ตัวอย่างเช่น For-Loop ต่อไปนี้จะแสดง ValueError Exception:

3. การใช้ enumerate() สำหรับ Indexed Iteration

Python มีการนำเสนอ Syntax ที่เรียบง่ายและอ่านเข้าใจง่ายสำหรับการสร้าง Loops แต่ขาดการรองรับในการเข้าถึง Indices ของ Elements อีกทางเลือกหนึ่งก็คือ การ Iterate ผ่าน List Indices และเข้าถึง List Values โดยใช้ Indices และวิธีนี้ก็ไม่ใช่แนวทาง Pythonic อย่างไม่ต้องสงสัย

Inbuilt enumerate() Function จะช่วยให้เราเข้าถึง Indices ของ Iterable Objects Items โดยการ Return Tuples ที่เก็บ Index-Value Pairs ดังที่แสดงใน Code Snippet ต่อไปนี้:

start Named Parameter จะช่วยให้เราตั้งค่า Index เริ่มต้น ซึ่ง For-Loop ต่อไปนี้ใช้ 1 เป็น Iterable Item Index

4. ตัวเลือกเพื่อใช้งานแทน List Comprehension ด้วย map() และ filter()

Python มีการนำเสนอ Concept ที่เรียกว่า List Comprehension เพื่อสร้าง Lists ใหม่โดยอิงตาม Iterable Objects ที่มีอยู่ในแนวทาง Pythonic เราสามารถใช้ Algorithms ที่เกี่ยวข้องกับการ Map และการ Filter ทั่วไปได้โดยใช้ List Comprehension อย่างไรก็ตาม Python ยังมี map() และ filter() Inbuilt Functions เพื่อจัดการการ Map และการ Filter ในลักษณะที่ภาษา Programming สมัยใหม่อื่น ๆ นำเสนอ เช่น การใช้ map() และ filter() array Methods ใน JavaScript

พิจารณา List Comprehension ต่อไปนี้ที่ช่วยให้เราแปลง ลำดับตัวเลขที่ User ป้อนเข้าไป ให้เป็น Integer List:

นอกจากนี้ เรายังสามารถใช้ map() Function แทน List Comprehension ได้ดังนี้:

Code Snippet ด้านบนนี้ จะทำการ Map String Elements เป็น Integers โดยการเรียก int() Constructor เป็น Inbuilt Function

ในทำนองเดียวกัน เราสามารถใช้ filter() Function เพื่อสร้าง List ใหม่โดย Extract เฉพาะ Elements ที่ต้องการโดยยึดตาม Predicate Lambda ดังนี้:

Code Snippet ด้านบนนี้ ใช้ filter() และ Lambda Function เพื่อทำการ Filter เฉพาะตัวเลขคู่ออกจาก nums List

Python Developers ที่มีประสบการณ์ส่วนใหญ่ ถือว่า List Comprehensions มีความเป็น Pythonic มากกว่า map() และ filter() แต่ก็ไม่เป็นความจริงในทุกสถานการณ์ บางครั้ง map() และ filter() จะทำให้ Code เป็นระเบียบและ มีความเป็น Pythonic มากขึ้นด้วย คำถาม StackOverflow นี้จะช่วยให้คุณสามารถค้นคว้าเพิ่มเติมเกี่ยวกับกรณีนี้

นอกจากนี้ JavaScript ยังมีการนำเสนอ Shorthand Methods ที่ทันสมัยสำหรับการจัดการ Array ดังที่ระบุไว้ในบทความนี้

5. การใช้ breakpoint() Function

เชื่อว่า Web Developer ทุกคนน่าจะทราบเกี่ยวกับ JavaScript debugger Keyword ซึ่งช่วยเราตั้งค่า Breakpoint ใน JavaScript Source Files โดย Browser Developer Tools มักจะหยุด Code Execution ที่คำสั่ง debugger ใน Python นั้น Inbuilt breakpoint() Function จะทำงานเหมือนกับ debugger Keyword ของ JavaScript เจ้า breakpoint() Function จะเรียกใช้ set_trace() Function ใน pdb Module ซึ่งใช้ Official Python debugger

ลองมาสร้าง Code Snippet อย่างง่ายและเพิ่มการเรียกใช้ breakpoint() Function เพื่อตรวจสอบวิธีการทำงานของพวกมัน:

เมื่อคุณ Run Code Snippet ข้างต้นแล้ว Python จะหยุด Code Execution ที่คำสั่ง Print และเปิดโปรแกรมโต้ตอบ Pdb (Python debugger) จากนั้น คุณสามารถตรวจสอบ Python Objects และใช้คำสั่ง Pdb ดังที่แสดงในตัวอย่างต่อไปนี้:

การ Debug Python Source File โดยใช้ Inbuilt Debugger ซึ่งเป็นรูปภาพจากผู้เขียนบทความ

ปัจจุบัน Developers ส่วนใหญ่ จะตั้งค่า GUI Breakpoints ใน Code Editors โดยใช้ Editor Extensions ที่เชื่อมต่อกับ Python debugger แต่ breakpoint() Function จะเริ่ม Pdb สำหรับ Developers ที่ชื่นชอบการใช้การ Debug ผ่าน Command-Line

6. การใช้ any() และ all() Shorthand Functions

ในปัจจุบัน Developers ส่วนใหญ่ใช้ Python สำหรับ Projects ที่เกี่ยวข้องกับ Data Science เนื่องจาก Environment ที่เป็นมิตรต่อการประมวลผลข้อมูลและความพร้อมใช้งานของ Data Science Libraries

Python มีการนำเสนอ Inbuilt Syntax, Data Structures และ Modules ที่ช่วยให้คุณทำงานเกี่ยวกับการประมวลผลข้อมูลทั่วไปได้อย่างมีประสิทธิผล มันมี Dynamic List Structure พร้อม Methods ต่าง ๆ ในการจัดเก็บ Linear Data Segments ในขณะเดียวกัน Inbuilt Shorthand Functions ที่รู้จักกันดีของ Python อย่าง sum()sorted() เป็นต้น จะช่วยให้เราประมวลผล Lists ได้อย่างมีประสิทธิผล

any() และ all() Inbuilt Functions จะช่วยให้เราได้รับค่า Boolean (ค่า True/False) ของ Iterable Object Elements

ตัวอย่างเช่น any() Function จะ Return ค่า True หาก List ที่ระบุ มี Truthy Element อย่างน้อยหนึ่งรายการ

ลองมาดู Code Snippet ต่อไปนี้กัน:

ในที่นี้คำสั่ง Print จะให้ผลลัพธ์เป็น True เนื่องจาก List มี Truthy Element อย่างน้อยหนึ่งรายการ ซึ่งก็คือ 10

all() Function จะ Returns ค่า True หาก Iterable Object Elements ทั้งหมดเป็นค่าความจริง สมมติว่าคุณจัดเก็บ File Contents ไว้ใน List เป็นบรรทัด และตอนนี้คุณต้องตรวจสอบว่า ทุกบรรทัดมีข้อมูลบางส่วนหรือไม่ คุณสามารถใช้ all() Function ในสถานการณ์นี้ได้ดังนี้:

คำสั่ง Print ด้านบนให้ผลลัพธ์เป็น True เนื่องจากทุก String Item มีอักขระ (Character) อย่างน้อยหนึ่งตัว คุณยังสามารถใช้ Shorthand Functions เหล่านี้เพื่อทดสอบ List/Iterable Elements ตามเงื่อนไข Code Snippet ต่อไปนี้จะตรวจสอบว่า ตัวเลขทั้งหมดใน List เป็นเลขคู่หรือไม่:

Shorthand Functions เหล่านี้ จะช่วยให้คุณตรวจสอบ Data Elements ใน Iterable Object (Lists, Generators, Sets เป็นต้น) โดยไม่ต้องใช้ Looping Structures ด้วยตัวคุณเอง

คุณสามารถสำรวจ Python Inbuilt Functions ที่รองรับทั้งหมดได้จาก Official Documentation นี้

ที่มา: https://levelup.gitconnected.com/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด