Latest web development tutorials

وظيفة Python3

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

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


تعريف دالة

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

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

قواعد

الدالات المعرفة من قبل الثعبان باستخدام مواطنه الكلمة، الشكل العام كما يلي:

def 函数名(参数列表):
    函数体

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

أمثلة

دعونا استخدام وظيفة لإخراج "مرحبا العالم!"

>>> def hello() :
   print("Hello World!")

   
>>> hello()
Hello World!
>>> 

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

#!/usr/bin/python3

# 计算面积函数
def area(width, height):
    return width * height
 
def print_welcome(name):
    print("Welcome", name)

print_welcome("w3big")
w = 4
h = 5
print("width =", w, " height =", h, " area =", area(w, h))

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

Welcome w3big
width = 4  height = 5  area = 20

استدعاء دالة

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

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

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

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

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

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

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

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

#!/usr/bin/python3
 
# 可写函数说明
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/python3
 
#可写函数说明
def printme( str ):
   "打印任何传入的字符串"
   print (str);
   return;
 
#调用printme函数
printme();

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

Traceback (most recent call last):
  File "test.py", line 10, in <module>
    printme();
TypeError: printme() missing 1 required positional argument: 'str'

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

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

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

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

#!/usr/bin/python3
 
#可写函数说明
def printme( str ):
   "打印任何传入的字符串"
   print (str);
   return;
 
#调用printme函数
printme( str = "本教程");

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

本教程

يوضح المثال التالي استخدام المعلمات وظيفة لا تحتاج إلى استخدام الترتيب المحدد:

#!/usr/bin/python3
 
#可写函数说明
def printinfo( name, age ):
   "打印任何传入的字符串"
   print ("名字: ", name);
   print ("年龄: ", age);
   return;
 
#调用printinfo函数
printinfo( age=50, name="w3big" );

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

名字:  w3big
年龄:  50

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

عندما يتم استدعاء الدالة، إذا لم يتم تمرير المعلمة، فإنه سيتم استخدام المعلمات الافتراضية. في المثال التالي، إذا لم معلمة سن اردة، القيمة الافتراضية:

#!/usr/bin/python3
 
#可写函数说明
def printinfo( name, age = 35 ):
   "打印任何传入的字符串"
   print ("名字: ", name);
   print ("年龄: ", age);
   return;
 
#调用printinfo函数
printinfo( age=50, name="w3big" );
print ("------------------------")
printinfo( name="w3big" );

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

名字:  w3big
年龄:  50
------------------------
名字:  w3big
年龄:  35

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

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

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

مع علامة النجمة (*) سيتم تخزينها في أسماء المتغيرات جميع المعلمات متغير لم يكشف عن اسمه. إذا لم يكن هناك حجة عندما يتم استدعاء الدالة، وهو الصفوف (tuple) فارغة. ونحن لا يمكن تمرير متغير اسمه إلى وظيفة. الأمثلة التالية:

#!/usr/bin/python3
 
# 可写函数说明
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/python3
 
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2;
 
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
print ("相加后的值为 : ", sum( 20, 20 ))

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

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

بيان عودة

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

#!/usr/bin/python3

# 可写函数说明
def sum( arg1, arg2 ):
   # 返回2个参数的和."
   total = arg1 + arg2
   print ("函数内 : ", total)
   return total;

# 调用sum函数
total = sum( 10, 20 );
print ("函数外 : ", total)

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

函数内 :  30
函数外 :  30

نطاق متغير

Pyhton، المتغير ليس هو الموقف الذي يمكن للبرنامج الوصول، والوصول يعتمد على حيث تم تعيين متغير.

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

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

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

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

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

#!/usr/bin/python3

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

#调用sum函数
sum( 10, 20 );
print ("函数外是全局变量 : ", total)

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

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