ใน 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'>