Function ใน Python สามารถ Return ได้มากกว่าหนึ่ง Object จริงๆหรือ?

Prasit Chulanutrakul
Data Cafe Thailand
Published in
1 min readMar 26, 2020

Function ใน Python สามารถ Return ได้มากกว่าหนึ่ง Object จริงๆหรือ?

หลายๆคนคงจะตอบว่า “จริง” ทำได้ แต่คำตอบคือ “ไม่จริง ไม่สามารถทำได้” ! ถ้าใครตอบว่าได้ ถือเป็นความผิดร้ายแรงอย่างหนึ่ง!!

แล้วปกติที่เขียนโค้ดแบบนี้หละ มาลองประกาศ Function ง่ายๆกัน

def test_function(value1, value2):
value1 += 1
value2 += 1
return value1, value2

จากนั้นมาทดสอบฟังก์ชั่นกันเลย

result1, result2 = test_function(1, 2)
print(result1)
print(result2)

จะได้ผลลัพท์ดังนี้

2
3

อ้าวแล้วที่บอกว่า ไม่จริงที่ Python สามารถ Return ได้มากกว่าหนึ่ง Object หละ มาดูตรงนี้กันก่อน ในความเป็นจริง การประกาศตัวแปรประเภท Tuple ใน Python ไม่จำเป็นต้องมีวงเล็บ ตรงนี้หลายคนอาจจะยังไม่ทราบ

เรามาลองเล่นกันดูดีกว่า หากลองพิมพ์ โค้ดตามด้านล่าง จะเห็นผลลัพท์ ว่าประเภทของตัวแปร x คือ Tuple ไม่ติด Error ด้วย

x = 1,2,3,4,5
print(type(x))

จะได้ผลลัพท์ดังนี้

<class ‘tuple’>

ตอนเราใช้คำสั่ง return value1, value2 ความจริงแล้วเรากำลังสร้าง Object ใหม่ขึ้นมาโดยไม่รู้ตัว Object นั้นคือ Tuple ที่มีสมาชิกคือ value1 และ value2 ดังนั้นจริงๆแล้ว Function Return ได้แค่ Object เดียวเท่านั้น ในกรณีนี้คือ Tuple

ถึงตรงนี้แล้วก็มาทดสอบกัน เรียกใช้ฟังก์ชั่นด้านบนอีกครั้ง แล้วเช็ค ประเภทของ Object

print(type(test_return(1, 2)))

จะได้ผลลัพท์ดังนี้

<class ‘tuple’>

เห็นไหมเป็น Tuple จริงๆด้วย

หลายคนอาจจะยังสงสัยอีก แล้วที่เราเขียนโค้ดแบบนี้หละ

result1, result2 = test_return(1, 2)

อันนี้ที่จริงเรียกว่าการ Unpack Tuple โดยที่เราสามารถนำตัวแปรเท่ากับจำนวนสมาชิกของTuple นั้นๆ มารับ ค่าสมาชิกได้ เช่น

a, b = (1, 2)
print(a)
print(b)

จะได้ผลลัพท์ดังนี้

1
2

เอาหละก็จบ บทความกันตรงนี้

หวังว่าทุกคนจะเข้าใจ Python กันมากขึ้นๆ ขอให้ Python จงเจริญ!!

--

--