كيفية إرجاع قيم إرجاع متعددة في دالة بايثون

اعمال

في لغة C ، يعد إرجاع قيم إرجاع متعددة من دالة أمرًا شاقًا للغاية ، ولكن في Python ، من السهل جدًا القيام بذلك.

العودة مفصولة بفواصل

في Python ، يمكنك ببساطة إرجاع قائمة سلاسل مفصولة بفواصل أو أرقام.

كمثال ، حدد دالة تقوم فقط بإرجاع سلسلة ورقم كما هو موضح أدناه ، مع فصل كل منهما بفاصلة بعد الإرجاع.

def test():
    return 'abc', 100

في Python ، تعتبر القيم المفصولة بفواصل مجموعات بدون أقواس ، باستثناء الحالات الضرورية من الناحية التركيبية. لذلك ، ستعيد الوظيفة في المثال أعلاه مجموعة مع كل قيمة كعنصر.

الفاصلة هي التي تُنشئ المجموعة ، وليس الأقواس المستديرة. يمكن حذف الأقواس المستديرة ، إلا في حالة الصفوف الفارغة أو عند الضرورة لتجنب الغموض النحوي.
Built-in Types — Python 3.10.0 Documentation

نوع القيمة المعادة هو tuple.

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