بيان العودة في Python

العبارة `return` في بايثون تُستخدم لإرجاع القيم من الدالة. يمكننا استخدام عبارة الـ `return` في دالة فقط، ولا يمكن استخدامها خارج دالة بايثون.

دالة بايثون بدون عبارة الـ `return`

كل دالة في بايثون تقوم بإرجاع شيء. إذا لم تحتوي الدالة على عبارة `return`، فإنها ترجع None.

def print_something(s):
    print('Printing::', s)


output = print_something('Hi')

print(f'A function without return statement returns {output}')

الناتج:

Python Function Without Return Statement

مثال على عبارة الـ `return` في بايثون

يمكننا القيام ببعض العمليات في دالة وإرجاع النتيجة إلى المستدعي باستخدام عبارة الـ `return`.

def add(x, y):
    result = x + y
    return result


output = add(5, 4)
print(f'Output of add(5, 4) function is {output}')

الناتج:

Python Return Example

عبارة الـ `return` في بايثون مع تعبير

يمكننا أيضًا وجود تعابير في عبارة الـ `return`. في هذه الحالة، يتم تقييم التعبير ويتم إرجاع النتيجة.

def add(x, y):
    return x + y


output = add(5, 4)
print(f'Output of add(5, 4) function is {output}')

الناتج:

Python Return Statement With Expression

Python إرجاع boolean

لنلق نظرة على مثال حيث سنقوم بإرجاع القيمة البولية للوسيط في دالة. سنستخدم دالة bool() للحصول على القيمة البولية للكائن.

def bool_value(x):
    return bool(x)


print(f'Boolean value returned by bool_value(False) is {bool_value(False)}')
print(f'Boolean value returned by bool_value(True) is {bool_value(True)}')
print(f'Boolean value returned by bool_value("Python") is {bool_value("Python")}')

الناتج:

Python Return Boolean

Python إرجاع string

لنلق نظرة على مثال حيث ستقوم دالتنا بإرجاع التمثيل النصي للوسيط. يمكننا استخدام دالة str() للحصول على التمثيل النصي لكائن ما.

def str_value(s):
    return str(s)


print(f'String value returned by str_value(False) is {str_value(False)}')
print(f'String value returned by str_value(True) is {str_value(True)}')
print(f'String value returned by str_value(10) is {str_value(10)}')

الناتج:

Python Return String

Python إرجاع tuple

أحيانًا نريد تحويل عدد من المتغيرات إلى tuple. لنرى كيفية كتابة دالة لإرجاع tuple من عدد متغير من الوسائط.

def create_tuple(*args):
    my_list = []
    for arg in args:
        my_list.append(arg * 10)
    return tuple(my_list)


t = create_tuple(1, 2, 3)
print(f'Tuple returned by create_tuple(1,2,3) is {t}')

الناتج:

Python Function Return Tuple

قراءة إضافية: Python *args و **kwargs

وظيفة Python تُرجع وظيفة أخرى

يمكننا أيضًا إرجاع وظيفة من البيان return. هذا مشابه لـ Currying ، والذي هو تقنية ترجمة تقييم وظيفة تأخذ عدة وسائط إلى تقييم سلسلة من الوظائف، كل وظيفة لها وسيط واحد.

def get_cuboid_volume(h):
    def volume(l, b):
        return l * b * h

    return volume


volume_height_10 = get_cuboid_volume(10)
cuboid_volume = volume_height_10(5, 4)
print(f'Cuboid(5, 4, 10) volume is {cuboid_volume}')

cuboid_volume = volume_height_10(2, 4)
print(f'Cuboid(2, 4, 10) volume is {cuboid_volume}')

الناتج:

Python Return Function

وظيفة Python تُرجع وظيفة خارجية

يمكننا أيضًا إرجاع وظيفة محددة خارج الوظيفة باستخدام البيان return.

def outer(x):
    return x * 10


def my_func():
    return outer


output_function = my_func()
print(type(output_function))

output = output_function(5)
print(f'Output is {output}')

الناتج:

Python Function Return Outer Function

إرجاع قيم متعددة في Python

إذا كنت ترغب في إرجاع قيم متعددة من دالة، يمكنك إرجاع tuple، list، أو كائن dictionary حسب احتياجك. ومع ذلك، إذا كان عليك إرجاع عدد كبير من القيم، فإن استخدام التسلسل يعتبر عملية تستهلك الكثير من الموارد. يمكننا استخدام yield في هذه الحالة لإرجاع قيم متعددة واحدة تلو الأخرى.

def multiply_by_five(*args):
    for arg in args:
        yield arg * 5


a = multiply_by_five(4, 5, 6, 8)

print(a)
# عرض القيم
for i in a:
    print(i)

Output:

Python Return vs Yield

الملخص

تُستخدم عبارة العودة في Python لإرجاع الناتج من دالة. تعلمنا أيضًا أنه يمكننا أيضًا إرجاع دالة من دالة أخرى. أيضًا، يتم تقييم التعبيرات ثم يتم إرجاع النتيجة من الدالة.

يمكنك مراجعة النص البرمجي الكامل لـ Python ومزيد من أمثلة Python من خلال مستودع GitHub الخاص بنا.

Source:
https://www.digitalocean.com/community/tutorials/python-return-statement