52 lines
2.7 KiB
Markdown
52 lines
2.7 KiB
Markdown
---
|
|
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]
|
|
` |