Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ส่งคืนค่าหลายค่าใน Python หรือไม่


ฟังก์ชัน Python สามารถคืนค่าได้หลายค่า ค่าเหล่านี้สามารถเก็บไว้ในตัวแปรได้โดยตรง ฟังก์ชันไม่ได้จำกัดให้ส่งคืนตัวแปร แต่สามารถคืนค่าศูนย์ หนึ่ง สอง หรือมากกว่าได้

นี่เป็นคุณสมบัติเริ่มต้นของ python เพื่อคืนค่าหลายค่า/ตัวแปร ซึ่งไม่มีในภาษาโปรแกรมอื่นๆ เช่น C++ หรือ Java

สำหรับการคืนค่าหลายค่าจากฟังก์ชัน เราสามารถคืนค่าออบเจ็กต์ tuple, list หรือ dictionary ได้ตามความต้องการของเรา

วิธีที่ 1:การใช้ทูเพิล

def func(x):
   y0 = x+ 1
   y1 = x * 3
   y2 = y0 ** 3
   return (y0, y1, y2)

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

วิธีที่ 2:การใช้พจนานุกรม

อีกวิธีหนึ่งที่ดีกว่าคือการใช้พจนานุกรม

def func(x):
   y0 = x+ 1
   y1 = x * 3
   y2 = y0 ** 3
   return {'y0': y0, 'y1': y1, 'y2': y2}

ตอนนี้ เรามีกลไกที่เราสามารถฉายสมาชิกของวัตถุที่ส่งคืนได้

ตัวอย่างเช่น −

result[‘y1’]

วิธีที่ 3:การใช้คลาส

อีกทางเลือกหนึ่งคือการใช้คลาส ซึ่งเราสามารถคืนโครงสร้างพิเศษได้

class ReturnValue(obj):
   def __init__(self, y0, y1, y2):
      self.y0 = y0
      self.y1 = y1
      self.y2 = y2

def g(x):
   y0 = x + 1
   y1 = x * 3
   y2 = y0 ** 3
   return ReturnValue (y0, y1, y2)

วิธีที่ 4:การใช้รายการ

อีกวิธีหนึ่งคือการใช้รายการ

def func(x):
   result = [x + 1]
   result.append(x * 3)
   result.append(y0 ** 3)
   return result

วิธีที่ 5:การใช้ตัวสร้าง

เราสามารถเลือกตัวเลือกนี้ในการใช้ผลตอบแทนเพื่อคืนค่าหลายค่าทีละค่า ในกรณีที่เราต้องคืนค่าจำนวนที่ค้างอยู่ การใช้ลำดับอาจใช้ทรัพยากรระบบจำนวนมาก

def func(x):
   y0 = x + 1
   yield y0
   yield x * 3
   yield y0 ** 3

วิธีใดดีที่สุดในการคืนค่าหลายค่าจากฟังก์ชัน

ทุกอย่างขึ้นอยู่กับรสนิยมหรือความต้องการของคุณ ว่าคุณชอบวิธีไหนมากกว่ากัน คุณสามารถเลือกเส้นทาง – พจนานุกรม เนื่องจากเกี่ยวข้องกับงานการตั้งค่าน้อยกว่า หรือคุณสามารถเลือก – class route เนื่องจากอาจช่วยให้คุณหลีกเลี่ยงความสับสนว่าพจนานุกรมหมายถึงอะไร หรือคุณสามารถเลือกตัวสร้างเพื่อให้ได้ค่าทีละตัว