Latest web development tutorials

وظيفة بيثون

وظيفة هو التنظيم الجيد، قابلة لإعادة الاستخدام، وتستخدم لتحقيق جزء رمز واحد، أو الوظائف المرتبطة.

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


تعريف دالة

يمكنك تحديد وظيفة من وظيفة تريد، والقواعد البسيطة التالية:

  • وظيفة كتلة مواطنه الكلمة في البداية، يليه اسم وظيفة ومعرفات بين قوسين ().
  • يجب أن توضع أية معلمات واردة والحجج بين قوسين في الوسط. ويمكن استخدامه لتحديد معلمات بين قوسين.
  • وتستخدم لوصف وظيفة - في السطر الأول من البيان وظيفة يمكن استخدامها اختياريا وثيقة السلسلة.
  • المحتوى وظيفة بدءا من القولون والمسافة البادئة.
  • العودة [التعبير] نهاية الدالة، اختياريا إرجاع قيمة إلى الطالب. العودة دون أي ما يعادل التعبير للعودة لا شيء.

قواعد

def functionname( parameters ):
   "函数_文档字符串"
   function_suite
   return [expression]

افتراضيا، قيمة اسم المعلمة والمعلمة في الترتيب المحدد في إعلان وظيفة مباريات حتى.

أمثلة

ما يلي هو وظيفة بيثون بسيطة، فمررها سلسلة كمعلمة، ثم الطباعة إلى جهاز العرض القياسية.

def printme( str ):
   "打印传入的字符串到标准显示设备上"
   print str
   return

استدعاء دالة

تعريف دالة فقط إلى اسم وظيفة، تحديد المعلمات، وبنية كتلة التعليمات البرمجية يحتوي على وظيفة.

بعد الانتهاء من الهيكل الأساسي لهذه الوظيفة، يمكنك إجراء استدعاء دالة أخرى ليتم تنفيذها مباشرة من موجه بيثون.

ويطلق على الأمثلة التالية printme وظيفة ():

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 定义函数
def printme( str ):
   "打印任何传入的字符串"
   print str;
   return;
 
# 调用函数
printme("我要调用用户自定义函数!");
printme("再次调用同一函数");

أمثلة من إخراج أعلاه:

我要调用用户自定义函数!
再次调用同一函数

المعلمات التي تم تمريرها من قبل المعلمات القيمة وتمرير بالرجوع

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

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 可写函数说明
def changeme( mylist ):
   "修改传入的列表"
   mylist.append([1,2,3,4]);
   print "函数内取值: ", mylist
   return
 
# 调用changeme函数
mylist = [10,20,30];
changeme( mylist );
print "函数外取值: ", mylist

وتمريرها إلى وظيفة الكائن في نهاية لإضافة محتوى جديد باستخدام نفس المرجع. وبالتالي فإن النتائج الإخراج هي على النحو التالي:

函数内取值:  [10, 20, 30, [1, 2, 3, 4]]
函数外取值:  [10, 20, 30, [1, 2, 3, 4]]

المعلمات

ما يلي هو نوع المعلمة رسمية يمكن استخدامها عند استدعاء الدالة:

  • معيار إلزامي
  • الحجج الكلمات الرئيسية
  • المعلمات الافتراضية
  • معلمات طول متغير

معيار إلزامي

معيار إلزامي لتمريرها إلى وظيفة في الترتيب الصحيح. عندما يجب أن يكون عدد المكالمات وإعلان نفسه.

printme المكالمة () وظيفة، يجب أن يمر في معلمة، أو سوف يحدث خطأ في بناء الجملة:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
#可写函数说明
def printme( str ):
   "打印任何传入的字符串"
   print str;
   return;
 
#调用printme函数
printme();

أمثلة من إخراج أعلاه:

Traceback (most recent call last):
  File "test.py", line 11, in <module>
    printme();
TypeError: printme() takes exactly 1 argument (0 given)

الحجج الكلمات الرئيسية

الحجج الكلمات الرئيسية وظيفة تدعو استدعاء دالة علاقة وثيقة باستخدام حجج رئيسية لتحديد قيمة المعلمة التي تم تمريرها.

عند استخدام المعلمة الكلمات الرئيسية يسمح للمعلمة وظيفة أجل دعوة غير متناسقة مع البيان، لأن بيثون مترجم قادر على مطابقة قيم المعامل باستخدام اسم المعلمة.

يتم استدعاء الدالة المثال التالي printme () مع اسم المعلمة:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
#可写函数说明
def printme( str ):
   "打印任何传入的字符串"
   print str;
   return;
 
#调用printme函数
printme( str = "My string");

أمثلة من إخراج أعلاه:

My string

المثال التالي يستطيع أن يأمر حجة رئيسية هي لا تظهر أهمية أكثر وضوحا:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
#可写函数说明
def printinfo( name, age ):
   "打印任何传入的字符串"
   print "Name: ", name;
   print "Age ", age;
   return;
 
#调用printinfo函数
printinfo( age=50, name="miki" );

أمثلة من إخراج أعلاه:

Name:  miki
Age  50

المعلمات الافتراضية

عندما يتم استدعاء الدالة، القيمة الافتراضية إذا لم يتم تمرير معلمة، وتعتبر القيمة الافتراضية. افتراضيا طباعة اجتماعها العادي من العمر، إذا لم يتم تمرير العمر:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
#可写函数说明
def printinfo( name, age = 35 ):
   "打印任何传入的字符串"
   print "Name: ", name;
   print "Age ", age;
   return;
 
#调用printinfo函数
printinfo( age=50, name="miki" );
printinfo( name="miki" );

أمثلة من إخراج أعلاه:

Name:  miki
Age  50
Name:  miki
Age  35

معلمات طول متغير

قد كنت في حاجة الى وظيفة التي يمكن التعامل مع أكثر من إعلان الأصلي من المعلمات. وتسمى هذه المعلمات المعلمات طول متغير، وهذين النوعين من المعلمات مختلفة، وليس تسمية الإعلان. بناء الجملة الأساسية هي كما يلي:

def functionname([formal_args,] *var_args_tuple ):
   "函数_文档字符串"
   function_suite
   return [expression]

مع علامة النجمة (*) سيتم تخزينها في أسماء المتغيرات جميع المعلمات متغير لم يكشف عن اسمه. قد يكون المعلمات تمرير الكثير من الخيارات. الأمثلة التالية:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 可写函数说明
def printinfo( arg1, *vartuple ):
   "打印任何传入的参数"
   print "输出: "
   print arg1
   for var in vartuple:
      print var
   return;
 
# 调用printinfo 函数
printinfo( 10 );
printinfo( 70, 60, 50 );

أمثلة من إخراج أعلاه:

输出:
10
输出:
70
60
50

وظيفة مجهول

الثعبان باستخدام امدا لخلق وظيفة غير معروفة.

  • مجرد تعبير لامدا، وظيفة الجسم هو أبسط بكثير من الوضوح.
  • والجسد هو تعبير لامدا، وليس كتلة من التعليمات البرمجية. يمكننا أن حزمة فقط منطق محدود في التعبير امدا.
  • وظيفة امدا لها مساحة خاصة بها، والتي لا يمكن الوصول إليها من خارج قائمته حجة الخاصة أو المعلمات مساحة العالمية.
  • على الرغم من أن وظيفة امدا يبدو فقط كتابة سطر واحد، ولكن ليس نفس وظائف مضمنة في C أو C ++، غير مشغولة الغرض الأخير عند استدعاء وظيفة الذاكرة كومة صغيرة لزيادة كفاءة التشغيل.

قواعد

يحتوي بناء الدالة امدا عبارة واحدة فقط، على النحو التالي:

lambda [arg1 [,arg2,.....argn]]:expression

الأمثلة التالية:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2;
 
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )
print "相加后的值为 : ", sum( 20, 20 )

أمثلة من إخراج أعلاه:

相加后的值为 :  30
相加后的值为 :  40

بيان عودة

بيان عودة [التعبير] للخروج وظيفة بشكل انتقائي إلى الطالب بإرجاع التعبير. بيان عودة مع أية معلمات بإرجاع لا شيء. تبين عدم الأمثلة السابقة كيفية إرجاع قيمة، والمثال التالي تظهر لك كيفية القيام بذلك:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 可写函数说明
def sum( arg1, arg2 ):
   # 返回2个参数的和."
   total = arg1 + arg2
   print "函数内 : ", total
   return total;
 
# 调用sum函数
total = sum( 10, 20 );

أمثلة من إخراج أعلاه:

函数内 :  30

نطاق متغير

جميع المتغيرات في البرنامج الذي ليس موقفا التي يمكن الوصول إليها. يعتمد الوصول للمكان الذي يتم تعيين متغير.

نطاق متغير يحدد أي جزء من البرنامج الذي يمكنك الوصول إلى اسم متغير معين. اثنين من نطاق المتغير الأساسي على النحو التالي:

  • المتغيرات العالمية
  • المتغيرات المحلية

المتغيرات العالمية والمحلية

تعريف وظيفة المتغيرات الداخلية لديها النطاق المحلي، كما هو محدد في وظيفة الخارجية لديها نطاق عالمي.

لا يمكن إلا أن تعلن المتغيرات المحلية داخل وظيفة من قدرتها على الوصول إلى المتغيرات العالمية ويمكن الوصول إليها من خلال كافة الإجراءات. عند استدعاء وظيفة، سيتم إضافة كافة أسماء المتغيرات في التعريفات الدالة على نطاق. الأمثلة التالية:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

total = 0; # 这是一个全局变量
# 可写函数说明
def sum( arg1, arg2 ):
   #返回2个参数的和."
   total = arg1 + arg2; # total在这里是局部变量.
   print "函数内是局部变量 : ", total
   return total;
 
#调用sum函数
sum( 10, 20 );
print "函数外是全局变量 : ", total 

أمثلة من إخراج أعلاه:

函数内是局部变量 :  30
函数外是全局变量 :  0