textarea is empty

‎توابع در پايتون ـPython Functions

Previous >    <Next  

‎يك تابع بلوكي از كد ميباشند، كه با فراخوان آن اجرا ميگردد .براي بلوك كد تابع نامي منظور ‎ميشود، كه تابع با آن نام براي اجرا فراخوان ميگردد.

‎ميتوان در تابع پارامترهاي ورودي تعريف نمود وهنگام فراخوان آن داده هائي را به تابع منتقل ‎كرد .تابع ميتواند داراي نتيجه برگشتي باشد.

‎ايجاد تابع ـCreating a Function

‎در پايتون يك تابع با استفاده از كيورد‎def‎ تعريف ميشود .

‎مثال ـ تعريف تابع

def my_function():
  print("Hello from a function")

‎فراخوان تابع ـCalling a Function

‎براي فراخواني يك تابع ، از نام تابع وبه دنبال آن پرانتز استفاده ميشود.

‎مثال ـ فراخوان تابع

--(go to editor for change code and run)

‎آرگومان هاي تابع ـArguments

‎اطلاعات ميتواند توسط آرگومانهاي تابع به آن منتقل شود .آرگومانها بعد از نام تابع در بين ‎پرانتزهاي باز وبسته مشخص ميشوند .ميتوان هر تعداد آرگومان به آن اضافه كرد ، فقط بايد با ‎كام تفكيك شوند.

‎مثال ـ دراين مثال تابع با نامmy_function داراي يك آرگومان بنام fname دارد .در فراخوان ‎تابع نامي كوتاه ارسال ميشود، تا در تابع كامل آن چاپ شود.

--(go to editor for change code and run)

‎آرگومان ها اغلب در مستندات پايتون بهargs خلاصه ميشوند .

‎پارامترها يا آرگومان ـParameters or Arguments ‎?

‎اصلاح پارامتر ويا آرگومان مي توانند براي يك چيز استفاده شوند، وآن اطلاعاتي كه بيك تابع ‎مربوط ميشود.

‎از ديدگاه تابع ، پارامتر متغيريست كه در تعريف تابع و درون پرانتز ذكرشده است .ويك آرگومان ‎مقداريست كه در فراخواني تابع به آن ارسال ميشود.

‎تعداد آرگومانهاي تابع

‎بطور پيش فرض، يك تابع بايد باتعداد صحيح آرگومان ها فراخوان شود .باين معني كه اگر تابع ‎انتظار دو آرگومان دارد، بايد با دو آرگومان فراخوان شود، نه كمتر ونه بيشتر

‎مثال ـ در اين مثال براي تابع دو آرگومان در نظز گرفته شده وبا دوتاهم فراخوان ميشود.

--(go to editor for change code and run)

‎اگر تابع مثال فوق را با يك آرگومان ويا سه آرگومان فراخوان كنيد، خطائي رخ ميدهد .به مثال ‎بعدي توجه نمائيد.

‎مثال ـ تابع اين مثال دو آرگومان دارد ولي با يك آرگومان فراخوان ميشود.

--(go to editor for change code and run)

‎آرگومانهاي دلخواه ـArbitrary Arguments *args

‎اگر نمي دانيد چند آرگومان به تابع شما ارسال خواهد شد، قبل از نام پارامتر در تعريف تابع ‎يك‎*‎ اضافه كنيد .

‎با اين روش درفراخواني تابع يك تاپل دريافت ميكند .و براساس آن ميتواند به آيتمهايش دسترسي ‎داشته باشد.

‎مثال ـ اگر تعداد آرگومانها مشخص نيست، قيل از نام پارامتر‎*‎ اضافه كنيد .

--(go to editor for change code and run)

‎آرگومانهاي دلخواه اغلب در مستندات پايتون بصورت‎*args‎ خلاصه ميشود .

‎آرگومان هاي كي وردي ـKeyword Arguments

‎همچنين ميتوان آرگومان ها را بافرمت‎key=value‎‎ ارسال كرد . دراين ‎ارسال ترتيب آرگومان ها بي اهميت است.

‎مثال ـ نمونه ارسال آرگومان با فرمتkey=value

--(go to editor for change code and run)

‎عبارتKeyword Argumens اغلب در مستندات پايتون به صورت خلاصهkwargs نوشته مي شود.

‎آرگومان هاي كي وردي اختياري

Arbitrary Keyword Arguments, **kwargs

‎اگر نمي دانيد كه به تابع شما چند آرگومان كيوردي ارسال ميشود، قبل از نام پارامتر در تعريف ‎تابع ، دو ستاره‎(**)‎ اضافه كنيد . با اين روش تابع ميتواند يك ديكشنري از آرگومان ‎ها را دريافت كند، و تابع ميتواند براساس آن به آيتم هاي آن دسترسي داشته باشد.

‎مثال ـ‎ **kwargs

--(go to editor for change code and run)

‎عبارتArbitrary Keyword Argumens اغلب در مستندات پايتون به صورت خلاصه‎ **kwargs‎ ‎نوشته ميشود.

‎مقدار پارامتر پيش فرض ـDefault Parameter Value

‎در مثال بعدي نحوه استفاده از مقذار پارامتر پيش فرض را نشان ميدهد .اگر تابع را بدون آرگومان ‎فراخوان كنيم ، از مقدار پيش فرض استفاده ميكند.

‎مثال ـ استفاده تابع از مقدار پيش فرض پارامتر

--(go to editor for change code and run)

‎ارسال ليست بعنوان آرگومان تابع

‎ميتوان هر نوع داده اي را بعنوان آرگومان به يك تابع‎)‎ رشته، عدد، ليست،ديكشنري ‎و غيره‎(‎ ارسال كرد ومتناسب با آن در تابع اقدام نمود . بعنوان مثال اگر ليستي به ‎تابع بعنوان آرگومان ارسال شد، در تابع با آن بعنوان ليست برخورد ميشود.

‎مثال ـ نمونه ارسال ليست به تابع

--(go to editor for change code and run)

‎مقادير برگشتي ـReturn Values

‎در تابع با استفاده از دستور‎return‎ ميتوان مقداري را برگشت داد . .

‎مثال ـ تابع با مقدار برگشتي

--(go to editor for change code and run)

‎دستورPass در تابع

‎تعريف تابع نمي تواند خالي ويا بدون بلوك كد باشد .اما اگر بدلايل خاص لازم است ميتوان براي ‎پيش گيري از خطا دستور‎pass‎ را بعنوان بلوك كد استفاده كرد.

‎مثال ـ تابع با دستور‎pass

--(go to editor for change code and run)

‎آرگومان هاي فقط موقعيتي ـPositional-‎Only Arguments

‎ميتوان مشخص كرد كه تابع داراي آرگومان موقعيتي ويا كي وردي است .در آرگومان موقعيتي فقط ‎مقدار معرفي ميشودو مقادير به ترتيب به پارامترها نسبت داده ميشود.

‎براي مشخص كردن اينكه تابع فقط ميتواند آرگومان هاي موقعيتي داشته باشد، بعداز آرگومان ها ‎, /‎اضافه شود.

‎مثال ـ تابع با آرگومان فقط موقعيتي

--(go to editor for change code and run)

‎بدون علامت هاي‎‎,/‎‎ شما در واقع مجاز به استفاده از آرگومان كي وردي ‎هستيد، حتي اگر تابع انتظار آرگومانهاي موقعيتي باشد.

‎مثال ـ اعلام آرگومان كي ورودي ويا موقعيتي

--(go to editor for change code and run)

‎مثال ـ خطا در اعلام آرگومان فقط موقعيتي

--(go to editor for change code and run)

‎آرگومانهاي فقط كي ورودي ـKeyword-‎Only Arguments

‎براي مشخص كردن اينكه تابع فقط داراي آرگومان هاي كي ورديست، بايد قبل از پارامتر ‎*, ‎بايد اضافه شود.

‎مثال ـ آرگومان فقط كي وردي

--(go to editor for change code and run)

‎بدون‎*, ‎ حتي اگر تابع انتظار آرگومان هاي كي وردي را داشته ‎باشد، ميتوانيد از آرگومان هاي موقعيتي استفاده كنيد.

‎مثال ـ

--(go to editor for change code and run)

‎اما با‎*, ‎ اگر آرگومان موقعيتي در فراخواني باشد، خطا در يافت ‎ميكنيد .مشابه مثال زير

--(go to editor for change code and run)

‎تركيب فقط موقعيتي و فقط كي وردي

Combine Positional-Only and Keyword-Only

‎ميتوان دو نوع آرگومان را در يك تابع تعريف نمود .بدين صورت كه هرآرگوماني قبل از ‎/ ,‎فقط موقعيتي و هر آرگوماني بعداز‎*, ‎ ‎فقط كي وردي است.

‎مثال ـ تركيبي دو نوع آرگومان كهa,b فقط موقعيتي c,d فقط كي وردي

--(go to editor for change code and run)

‎تابع بازگشتي ـRecursion function

‎پايتون همجنين تابع باز گشتي را مي پذيرد ، بدين منعي كه يك تابع تعريف شده ميتواند خودش ‎فراخوان كند.

‎باز گشتي‎(Recursion)‎ يك مفهوم رايج در رياصيات وبرنامه نويسي است .به اين معني كه ‎يك تابع خودش را فراخوان ميكند .اين مزيت را دارد كه مي توانيد داده ها را براي رسيدن به يك ‎نتيجه حلقه بزنيد.

‎توسعه دهنده بايد در مورد بازگشتي تابع بسيار مراقب باشد .زيرا نوشتن تابعي كه هرگز خاتمه ‎نمي يابد ويا از مقدار زيادي از قدرت پردارنده استفاده ميكند، آسان ومشكل ساز است .با اين حال ‎اگر تابع بازگشتي بدرستي تنظيم ونوشته شود، ميتواند يك رويكرد بسيار كارآمد ازنظر رياضي و

‎برنامه نويسي باشد.

‎مثال ـ دراين مثال تابع‎tri_recursion()‎‎ برگشتي است .در هر باري تابع خودش را ‎فراخوان ميكند مقدارK يك واحد كاهش ميبابد .اين عمل در صورتي كه‎k>0‎ باشد .اگرصفر ‎باشد نتيجه نهائي برگشت ميشود .جمع اعداد‎1-‎n

--(go to editor for change code and run)

‎براي يك توسعه دهنده تازه كار وكم تجربه ، ممكن است مدتي طول بكشد تا بفهمد اين چگونه كار ‎ميكند، بهترين راه براي درك بيشتر اين موضوع آزمايش واصلاح آن است.


Previous >    <Next