freeCodeCamp/guide/arabic/python/calling-functions/index.md

2.7 KiB

title localeTitle
Python Calling Functions وظائف الاتصال بيثون

بيان تعريف دالة لا ينفذ الدالة. يتم تنفيذ (استدعاء) وظيفة باستخدام اسم الدالة متبوعًا بقوس يرفق الوسائط المطلوبة (إن وجدت).

`>>> def say_hello(): ... print('Hello') ...

say_hello() Hello `

يقدم تنفيذ وظيفة جدول رمز جديد يستخدم للمتغيرات المحلية للدالة. بتعبير أدق ، تخزن جميع التعيينات المتغيرة في دالة القيمة في جدول الرموز المحلي ؛ بينما تظهر المراجع المتغيرة أولاً في جدول الرموز المحلي ، ثم في جداول الرموز المحلية لإدراج الوظائف ، ثم في جدول الرموز العام ، وأخيرًا في جدول الأسماء المضمنة. وبالتالي ، لا يمكن تعيين المتغيرات العامة بشكل مباشر ضمن دالة ما (ما لم يتم تسميتها في بيان عام) ، على الرغم من إمكانية الرجوع إليها.

`>>> a = 1

b = 10 def fn(): ... print(a) # local a is not assigned, no enclosing function, global a referenced. ... b = 20 # local b is assigned in the local symbol table for the function. ... print(b) # local b is referenced. ... fn() 1 20 b # global b is not changed by the function call. 10 `

يتم إدخال المعلمات الفعلية (الوسائط) إلى استدعاء دالة في جدول الرموز المحلي للدالة المسماة عندما يتم استدعاؤها ؛ وبالتالي ، يتم تمرير الوسائط باستخدام المكالمة حسب القيمة (حيث تكون القيمة دومًا مرجع كائن ، وليس قيمة الكائن). عند استدعاء دالة دالة أخرى ، يتم إنشاء جدول رمز محلي جديد لهذا الاستدعاء.

`>>> def greet(s): ... s = "Hello " + s # s in local symbol table is reassigned. ... print(s) ...

person = "Bob" greet(person) Hello Bob person # person used to call remains bound to original object, 'Bob'. 'Bob' `

لا يمكن إعادة تعيين الوسائط المستخدمة في استدعاء دالة بواسطة الدالة ، ولكن يمكن تغيير القيم التي تشير إلى كائنات قابلة للتغيير إلى قيمها:

`>>> def fn(arg): ... arg.append(1) ...

a = [1, 2, 3] fn(a) a [1, 2, 3, 1] `