วิธีคืนค่าส่งคืนหลายค่าในฟังก์ชัน Python

ธุรกิจ

ใน C การคืนค่าส่งคืนหลายค่าจากฟังก์ชันนั้นค่อนข้างน่าเบื่อ แต่ใน Python ทำได้ง่ายมาก

กลับคั่นด้วยเครื่องหมายจุลภาค

ใน Python คุณสามารถส่งคืนรายการสตริงหรือตัวเลขที่คั่นด้วยเครื่องหมายจุลภาค

ตัวอย่างเช่น กำหนดฟังก์ชันที่ส่งคืนเฉพาะสตริงและตัวเลขดังที่แสดงด้านล่าง โดยแยกแต่ละรายการด้วยเครื่องหมายจุลภาคหลังการส่งคืน

def test():
    return 'abc', 100

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

เป็นเครื่องหมายจุลภาคที่สร้างทูเพิล ไม่ใช่วงเล็บกลม วงเล็บเหลี่ยมสามารถละเว้นได้ ยกเว้นในกรณีที่ทูเพิลว่างเปล่าหรือเมื่อจำเป็นเพื่อหลีกเลี่ยงความกำกวมทางวากยสัมพันธ์
Built-in Types — Python 3.10.0 Documentation

ประเภทของค่าตอบแทนคือทูเพิล

result = test()

print(result)
print(type(result))
# ('abc', 100)
# <class 'tuple'>

แต่ละองค์ประกอบจะเป็นประเภทที่กำหนดโดยฟังก์ชัน

print(result[0])
print(type(result[0]))
# abc
# <class 'str'>

print(result[1])
print(type(result[1]))
# 100
# <class 'int'>

เกิดข้อผิดพลาดหากคุณระบุดัชนีที่เกินจำนวนค่าส่งคืนที่คุณกำหนด

# print(result[2])
# IndexError: tuple index out of range

สามารถคลายแพ็กและสามารถกำหนดค่าส่งคืนหลายค่าให้กับตัวแปรแยกกันได้

a, b = test()

print(a)
# abc

print(b)
# 100

เช่นเดียวกับถ้าคุณต้องการระบุค่าส่งคืนสามค่าขึ้นไปแทนที่จะเป็นเพียงสองค่า

def test2():
    return 'abc', 100, [0, 1, 2]

a, b, c = test2()

print(a)
# abc

print(b)
# 100

print(c)
# [0, 1, 2]

ส่งกลับรายการ

[]หากคุณใส่ไว้ด้วยสิ่งนี้ ค่าส่งกลับจะเป็นรายการแทนที่จะเป็นทูเพิล

def test_list():
    return ['abc', 100]

result = test_list()

print(result)
print(type(result))
# ['abc', 100]
# <class 'list'>