تعلم لغة البايثون – الدرس الخامس عشر الدوال متعددة الوظائف Python Multiple Function Arguments

تتلقى كل وظيفة في Python عددًا محددًا مسبقًا من الحجج ، إذا تم الإعلان عنها بشكل طبيعي ، على النحو التالي:

def myfunction(first, second, third):
# افعل شيئًا مع المتغيرات الثلاثة
    ...

من الممكن الإعلان عن الدالات التي تتلقى عددًا متغيرًا من الوسائط باستخدام البنية التالية:

def foo(first, second, third, *therest):
    print("First: %s" % first)
    print("Second: %s" % second)
    print("Third: %s" % third)
    print("And all the rest... %s" % list(therest))

المتغير “therest” عبارة عن قائمة بالمتغيرات التي تستقبل جميع الوسيطات التي أعطيت للدالة “foo” بعد الوسيطات الثلاثة الأولى. لذا فإن الاتصال بـ foo (1،2،3،4،5) سيطبع:

def foo(first, second, third, *therest):
    print("First: %s" %(first))
    print("Second: %s" %(second))
    print("Third: %s" %(third))
    print("And all the rest... %s" %(list(therest)))

foo(1,2,3,4,5)

سنحصل على النتيجة التالية عند التشغيل

First: 1
Second: 2
Third: 3
And all the rest... [4, 5]

من الممكن أيضًا إرسال وسيطات الدالات حسب الكلمة الأساسية ، بحيث لا يهم ترتيب الوسيطة ، باستخدام بناء الجملة التالي. يعطي الرمز التالي الإخراج التالي: المجموع هو: 6 النتيجة: 1

def bar(first, second, third, **options):
    if options.get("action") == "sum":
        print("The sum is: %d" %(first + second + third))

    if options.get("number") == "first":
        return first

result = bar(1, 2, 3, action = "sum", number = "first")
print("Result: %d" %(result))

سنحصل على النتيجة التالية عند التشغيل

The sum is: 6
Result: 1

تتلقى الدالة “bar” 3 وسيطات. إذا تم استلام وسيطة “action” إضافية ، وهو يرشدك في تلخيص الأرقام ، فسيتم طباعة المجموع. وبدلاً من ذلك ، تعرف الدالة أيضًا أنها يجب أن تُرجع الوسيطة الأولى ، إذا كانت قيمة المعلمة “number” ، التي تم تمريرها إلى الدالة ، تساوي “first”.

تمرين

املأ دالات foo و bar حتى يتمكنوا من تلقي كمية متغيرة من الوسيطات (3 أو أكثر) يجب أن تُرجع الدالة foo مقدار الوسيطات الإضافية المستلمة. يجب أن يُرجع الشريط True إذا كانت قيمة الكلمة المفتاحية magicnumber تساوي 7 ، و False خلاف ذلك.

# تحرير وظائف النموذج الأولي والتنفيذ
def foo(a, b, c):
    pass

def bar(a, b, c):
    pass


# رمز الاختبار
if foo(1,2,3,4) == 1:
    print("Good.")
if foo(1,2,3,4,5) == 2:
    print("Better.")
if bar(1,2,3,magicnumber = 6) == False:
    print("Great.")
if bar(1,2,3,magicnumber = 7) == True:
    print("Awesome!")

الحل

# تحرير وظائف النموذج الأولي والتنفيذ
def foo(a, b, c, *args):
    return len(args)

def bar(a, b, c, **kwargs):
    return kwargs["magicnumber"] == 7


# رمز الاختبار
if foo(1,2,3,4) == 1:
    print("Good.")
if foo(1,2,3,4,5) == 2:
    print("Better.")
if bar(1,2,3,magicnumber = 6) == False:
    print("Great.")
if bar(1,2,3,magicnumber = 7) == True:
    print("Awesome!")

سنحصل على النتيجة التالية عند التشغيل

<script.py> output:
    Good.
    Better.
    Great.
    Awesome!





Leave a Reply