Categories
Computer Diary

การใช้ Spread Operator ในภาษาไพทอน

Spread Operator ใน Javascript ช่วยกระจายข้อมูลใน Object, Array ออกมาเพื่อใช้ใน Function หรือสร้างตัวแปรใหม่ ในบทความนี้เราจะบอกว่าคำสั่งนี้ก็มีใน Python เช่นกัน

Spread Operator เป็นตัวช่วยให้เราเขียนโค้ดในภาษาจาวาสคริปได้สะดวกขึ้นหลังจากการเปิดให้ใช้ตั้งแต่ ES6 เป็นต้นมา สัญลักษณ์นี้อนุญาตให้เรากระจายข้อมูลใน Array, String, Object ออกมาเป็นตัวแปรเดี่ยว ๆ เพื่อนำไปใช้งานในฟังก์ชัน หรือนำไปใช้สร้าง Array, Object ใหม่ เป็นต้น ตามนิยามของ Mozilla Developer Network ได้ตามนี้

Spread syntax (...) allows an iterable such as an array expression or string to be expanded in places where zero or more arguments (for function calls) or elements (for array literals) are expected, or an object expression to be expanded in places where zero or more key-value pairs (for object literals) are expected.

นิยามของ Spread syntax จากเว็บ MDN

หลังจากทราบนิยามของ Spread Operator แล้ว เรามาลองพิมพ์คำสั่งนี้ในรูปแบบภาษา จาวาสคริปจะได้ตามด้านล่างนี้ครับ โดยตัวโค้ดเอามาจากเว็บ Borntodev ที่ขายคอร์สเรียนโปรแกรมมิ่งครับ

ตัวโค้ดตามด้านบนนี้จะเป็นการใช้ Spread Operator เพื่อรวมข้อมูลจาก Array ทั้งสอง Array ให้เป็น Array เดียวครับ

หรือจะพิมพ์แบบนี้

ตัวโค้ดตามด้านบนนี้จะเป็นการใช้ Spread Operator เพื่อรวมข้อมูลจากสอง Object ให้เป็น Object เดียวครับ

เราจะพบได้ว่า Spread Operator ทำให้ชีวิตเราง่ายขึ้นมากกว่าเดิมอย่างเห็นได้ชัด อย่างไรก็ดี เมื่อเราเขียนโค้ดใน Python มันจะมี Spread Operator (…) แบบนี้ไหมเอ่ย?

คำตอบก็คือมีครับ เราสามารถใช้งาน Spread Operator กับ Function, Object และ Array ได้ตามตัวอย่างด้านล่างนี้ครับ (ข้อมูลบางส่วนเอามาจากหน้าเว็บนี้)

Function

จากภาพด้านบน เราสามารถใช้ Spread Operator เพื่อกระจายข้อมูลใน Array ลงไปใน Argument สำหรับฟังก์ชันที่เราต้องการได้โดยไม่จำเป็นต้องพิมพ์ทีละตัวแปร ทีละค่าลงใน Argument ของ Function นั้น

สิ่งที่ทำให้เราชีวิตดีขึ้นได้อีกระดับหนึ่งเลย

List

เราสามารถกระจายข้อมูลใน Array หนึ่งเพื่อนำไปใช้งานกับอีก Array หนึ่งได้โดยใช้ Spread Operator เช่นกัน เพียงแค่ใช้เครื่องหมายดอกจันทร์ 1 ครั้งตามภาพด้านบนก็กระจายข้อมูลใน Array ที่พิมพ์หลังเครื่องหมายดอกจันทร์ลงไปใน Array ใหม่ได้แล้ว

เจอแบบนี้ไป ชีวิตดีกว่าเดิมอีก

Dictionary

จากภาพด้านบน เราสามารถกระจายข้อมูลในตัวแปร Dictionary ในไพทอนที่มีชื่อว่า author ให้เข้ามาอยู่ในตัวแปรใหม่ได้ครับ แต่การใช้ Spread Operator จะต่างกันตัวแปรแบบอื่นที่ต้องใช้เครื่องหมายดอกจันทร์ (*) 2 ครั้งตามภาพด้านบนแล้วตามด้วยตัวแปร แค่นี้เราก็กระจายข้อมูลในตัวแปรหลังเครื่องหมายดอกจันทร์ลงไปในตัวแปรอีกตัวแปรหนึ่งได้เลย

สิ่งที่ก็ทำให้ชีวิตดีขึ้นอีกเช่นกัน

ต่อไป เราจะมาพูดถึงตัวอย่างการนำไปใช้งานในภาษาไพทอน โดยดัดแปลงมาจากโค้ดที่นำมาจากเว็บ Borntodev ไว้เป็นรูปภาพสองรูปภาพตามข้างบนนี้ เราจะได้ผลตามตัวอย่างด้านล่างนี้ครับ

ตัวอย่างที่ 1 ที่ใช้ Spread Operator กับ Array

ตัวอย่างที่ 2 ที่ใช้ Spread Operator กับ Object (ในไพทอนจะเรียก Dictionary)

จากภาพด้านบนสองภาพที่เขียน Spread Operator ในรูปแบบภาษาไพทอนครับ

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

  • พิมพ์ทีละตัวแปร
  • วนลูปไปข้างในเพื่อเอา Key กับ Value ของตัวแปร Dictionary ตัวเก่าแล้วเอามาใช้ในตัวแปรตัวใหม่ครับ

สองวิธีตามที่กล่าวมานั้นเสียเวลาไปเยอะ

ดังนั้นแล้ว เราเปลี่ยนมาใช้ Spread Operator แบบตามที่เขียนบทความไว้ข้างบนนี้จะประหยัดเวลาเขียนโค้ดไปได้อีกเยอะ ได้ชีวิตที่สะดวกสบายมากกว่าเดิมครับ ^^