---
title: Python Calling Functions
localeTitle: وظائف الاتصال بيثون
---
بيان تعريف دالة لا ينفذ الدالة. يتم تنفيذ (استدعاء) وظيفة باستخدام اسم الدالة متبوعًا بقوس يرفق الوسائط المطلوبة (إن وجدت).

 `>>> 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] 
`