آموزش برنامه نویسی

به روز ترین مطالب آموزشی و متدلوژی های برنامه نویسی

آموزش برنامه نویسی

به روز ترین مطالب آموزشی و متدلوژی های برنامه نویسی

آموزشگاه تحلیل داده فعالیت رسمی خود را از سال 1380 در قالب آموزشگاه تخصصی نرم افزار آغاز نموده. این موسسه از همان ابتدای تأسیس با بهره مندی از استاید حرفه ای رشته های نرم افزار و بانک های اطلاعاتی ، فعالیت تخصصی خود را در زمینه آموزش برنامه نویسی و بانک های اطلاعاتی آغاز نمود و پس از گذشت اندک زمانی توانست در زمینه نرم افزار و شبکه بعنوان یکی از حرفه ای ترین موسسات ایران ظاهر شود. با توجه به اینکه مدیریت آموزشگاه شخصاً در رشته نرم افزار تحصیل کرده و سابقه طولانی در تحلیل و طراحی و پیاده سازی نرم افزار و بانک های اطلاعاتی دارند ، خط مشی کلی موسسه بر مبنای آموزش پایه ای ، کاربردی ، عملی و تخصصی نرم افزار بنا شده است.


آدرس : خیابان شریعتی بالاتر از ملک جنب بانک صادرات طبقه دوم واحد 7
همراه: 09123840871 تلفن: 88146323 - 88146330

۳ مطلب با کلمه‌ی کلیدی «دوره پایتون» ثبت شده است

  • ۰
  • ۰

 

پایتون
پایتون

 

آیا به یادگیری پایتون فکر می کنید؟ آیا دوست دارید بدانید که آیا صدها ساعت سرمایه گذاری در هفته برای آموزش پایتون ارزشش را دارد؟ چند فرصت شغلی نیاز به برنامه نویس پایتون دارد؟ برای تبدیل شدن به یک برنامه نویس با رتبه برتر باید از پایتون به تنهایی استفاده کنم؟

1. توسعه دهنده پایتون

توسعه‌دهنده پایتون بودن یکی از بهترین انتخاب‌های شغلی برای افرادی است که ساعات طولانی را روی تمرین زبان برنامه‌نویسی سرمایه‌گذاری می‌کنند. از آنجایی که ارزش یکپارچه سازی فناوری چند سال پیش افزایش یافت، ارتقای موقعیت یک توسعه دهنده پایتون در سازمان ها تقریباً اجتناب ناپذیر است. شرکت‌ها مشاغلی دارند که به راحتی در دسترس توسعه‌دهندگان پایتون هستند تا توسعه front-endو back-end خود را به‌روز نگه دارند.

برنامه نویسی پایتون به شما شغلی را می دهد که مسئول بهینه سازی الگوریتم های داده است و عمدتاً ویژگی های بک اند و فرانت را از ابتدا ایجاد می کند. توسعه دهندگان پایتون مهارت حل مشکلات اصلی تجزیه و تحلیل داده ها و مدیریت امنیت داده ها را دارند. با مهارت های برنامه نویسی برجسته با استفاده از پایتون، می توانید سرپرست تیمی از توسعه دهندگان فرانت اند باشید.

2. مهندس نرم افزار

به عنوان یک توسعه دهنده باتجربه پایتون، همچنین می توانید دامنه عملیات خود را گسترش دهید تا فرصت های بیشتری در مهندسی نرم افزار بدست آورید. البته، شما باید در استفاده از سایر سیستم عامل ها و زبان های برنامه نویسی تطبیق پذیری بیشتری داشته باشید. با این حال، دانش گسترده زمانی که مجبور به نظارت بر پروژه‌ها با آزمایش و اشکال‌زدایی کدها باشید، جواب می‌دهد. برای مکان یابی و رفع اشکالات کدها باید اسکریپت های پایتون را بدانید.

3. دانشمند داده

بیشتر، دانشمندان داده بر روی تجزیه و تحلیل داده های ساختاریافته و بدون ساختار کار می کنند. امروزه، با این حال، دانش در آمار، علوم کامپیوتر و ریاضیات به کمک به یک پروفایل با ارزش کمک می کند. دانشمندان داده در سازمان‌هایی مشاغلی دارند که نیازمند استخراج، تجزیه و تحلیل و پردازش داده‌ها برای طراحی مدل‌های ساختاریافته برای دستیابی به برنامه‌های عملی هستند. آنها همچنین به تنظیم داده ها برای برنامه های یادگیری ماشین کمک می کنند.

شغل پایتون در علم داده نیاز به درک صحیح مدیریت داده برای استفاده دقیق از ویژگی های گسترده پایتون دارد. تنها در دهه گذشته، تقاضا برای دانشمندان داده فراتر از یک شک منطقی افزایش یافته است. حرفه ای بودن در استفاده از پایتون امروز می تواند شما را به عنوان بخشی از پردرآمدترین دانشمندان داده در جهان رتبه بندی کند. برای آموزش پایتون و دریافت متوسط حقوق 130000 دلار دیر نیست.

4. تحلیلگر داده

همه چیز برای خواندن، تماشا و گوش دادن در اینترنت بر اساس داده است. چه اطلاعاتی را در هر مقیاسی در اینترنت ایجاد یا مصرف کنید، داده ها به صورت یکپارچه جمع آوری و ذخیره می شوند. یک کارشناس داده روی جمع‌بندی داده‌ها از طریق اینترنت کار می‌کند تا الگو و معنا را رمزگشایی کند. سپس این اطلاعات به نفع شرکت ها در ایجاد محتوای کاربرپسندتر از خدمات استفاده می شود.

زبان برنامه نویسی پایتون ویژگی های تحلیلی و گزارش دهی بسیار خوبی را ارائه می دهد که تجزیه و تحلیل داده ها را با کمی تلاش امکان پذیر می کند. پلتفرم برنامه نویسی به راحتی الگوهای داده، گرایش ها و نقاط جستجو را در اینترنت پیدا می کند و گزارش واضحی از اطلاعات ارائه می دهد. آنها در تمام صنایع، از جمله مالی، بانکداری، مراقبت های بهداشتی، خودرو، فروشگاه های خرده فروشی و ... کار می کنند. مهارت های تحلیلی شما به عنوان یک توسعه دهنده پایتون باعث می شود خدمات شما در مشاغل مختلف مورد توجه قرار گیرد.

5. مهندس یادگیری ماشین (machine learning)

یکی دیگر از توضیحات شغلی پرتقاضای پایتون در دنیای فناوری امروز، تغذیه داده ها به ماشین ها است. ما اکنون ماشین‌هایی داریم که این دانش را برای ایجاد دستاوردهای به ظاهر غیرممکن با نتایج اثبات شده، یاد گرفته و به کار می‌برند. ماشین بر اساس آماری که بیشتر کامپایل شده و توسط یک برنامه نویس پایتون به سیستم داده می شود، پیشرفت می کند. وب سایت های پیشرو مانند فیس بوک، نتفلیکس و آمازون با استفاده از ماشین لرنینگ کار می کنند.

همه محصولات IoT (اینترنت اشیا) از هوش مصنوعی برای ارائه نتایج خارق العاده ای که امروزه می بینیم استفاده می کنند. هوش مصنوعی جنبه ای از یادگیری ماشین است که به سیستم اجازه می دهد تا داده های عجیب و غریب کاربر را برای تجربه کاربری بهتر جمع آوری کند. ویژگی های تحلیلی پایتون در اتوماسیون داده، پلتفرم برنامه نویسی را به ابزاری عالی برای ترکیب داده ها در ماشین ها تبدیل می کند. این مورد به طور ایده آل یکی از موثرترین ابزار برای پیاده سازی علم داده است.

  • افشین رفوآ
  • ۰
  • ۰

 

ماشین لرنینگ
ماشین لرنینگ

 

مطالعه نشان می‌دهد مدل‌های رایانه‌ای که فعل و انفعالات مولکولی را پیش‌بینی می‌کنند، قبل از اینکه بتوانند مکانیسم‌های اثر دارو را شناسایی کنند، نیاز به بهبود دارند. در طول چند دهه گذشته، آنتی بیوتیک های جدید بسیار کمی توسعه یافته اند، عمدتاً به این دلیل که روش های فعلی برای غربالگری داروهای بالقوه بسیار گران و زمان بر هستند. یک استراتژی جدید امیدوارکننده استفاده از مدل‌های محاسباتی است که راه بالقوه سریع‌تر و ارزان‌تری برای شناسایی داروهای جدید ارائه می‌دهد.

یک مطالعه جدید از MIT پتانسیل و محدودیت های یکی از این روش های محاسباتی را نشان می دهد. با استفاده از ساختارهای پروتئینی تولید شده توسط یک برنامه هوش مصنوعی به نام AlphaFold، محققان بررسی کردند که آیا مدل‌های موجود می‌توانند به دقت تعامل بین پروتئین‌های باکتریایی و ترکیبات ضد باکتریایی را پیش‌بینی کنند. اگر چنین است، آنگاه محققان می‌توانند از این نوع مدل‌سازی برای انجام نمایشگرهایی در مقیاس بزرگ برای ترکیبات جدیدی که پروتئین‌های قبلاً هدف‌گذاری نشده بودند، استفاده کنند. این امر توسعه آنتی‌بیوتیک‌هایی را با مکانیسم‌های اثر بی‌سابقه‌ای امکان‌پذیر می‌کند.

با این حال، محققان به رهبری جیمز کالینز، پروفسور ترمیر مهندسی پزشکی و علوم در موسسه مهندسی و علوم پزشکی MIT (IMES)و دپارتمان مهندسی بیولوژیک دریافتند که این مدل‌های موجود برای این منظور عملکرد خوبی ندارند.

کالینز می‌گوید: «پیش‌رفت‌هایی مانند AlphaFoldدر حال گسترش امکانات برای تلاش‌های کشف داروی سیلیکونی است، اما این پیشرفت‌ها باید با پیشرفت‌های اضافی در جنبه‌های دیگر مدل‌سازی که بخشی از تلاش‌های کشف دارو هستند همراه شود. "مطالعه ما هم از توانایی های فعلی و هم محدودیت های فعلی پلت فرم های محاسباتی برای کشف دارو صحبت می کند."

در مطالعه جدید خود، محققان توانستند عملکرد این نوع مدل‌ها را که به شبیه‌سازی اتصال مولکولی معروف هستند، با استفاده از تکنیک‌های یادگیری ماشینی برای اصلاح نتایج بهبود بخشند. به گفته محققان، با این حال، برای استفاده کامل از ساختارهای پروتئینی ارائه شده توسط AlphaFold، بهبود بیشتری لازم است.

برهمکنش های مولکولی

مطالعه جدید بخشی از تلاشی است که اخیرا توسط آزمایشگاه کالینز به نام پروژه آنتی بیوتیک-AI راه اندازی شده است که هدف آن استفاده از هوش مصنوعی برای کشف و طراحی آنتی بیوتیک های جدید است.

AlphaFold، یک نرم افزار هوش مصنوعی توسعه یافته توسط DeepMind و Google، ساختارهای پروتئینی را از توالی اسید آمینه آنها به طور دقیق پیش بینی کرده است. این فناوری در میان محققانی که به دنبال آنتی‌بیوتیک‌های جدید هستند، هیجان ایجاد کرده است و امیدوارند بتوانند از ساختارهای AlphaFold برای یافتن داروهایی که به پروتئین‌های باکتریایی خاص متصل می‌شوند، استفاده کنند.

برای آزمایش امکان سنجی این استراتژی، کالینز و دانشجویانش تصمیم گرفتند برهمکنش 296 پروتئین ضروری از E. coliرا با 218 ترکیب ضد باکتریایی از جمله آنتی بیوتیک هایی مانند تتراسایکلین ها مطالعه کنند.

محققان نحوه تعامل این ترکیبات با پروتئین های E. coliرا با استفاده از شبیه سازی های اتصال مولکولی تجزیه و تحلیل کردند، که پیش بینی می کند دو مولکول بر اساس شکل ها و خواص فیزیکی چقدر به یکدیگر متصل می شوند.

این نوع شبیه‌سازی با موفقیت در مطالعاتی که تعداد زیادی از ترکیبات را در برابر یک هدف پروتئینی غربال می‌کنند، برای شناسایی ترکیباتی که بهترین اتصال را دارند، استفاده شده است. اما در این مورد، جایی که محققان سعی داشتند بسیاری از ترکیبات را در برابر بسیاری از اهداف بالقوه غربال کنند، پیش‌بینی‌ها از دقت کمتری برخوردار بودند.

با مقایسه پیش‌بینی‌های تولید شده توسط این مدل با برهم‌کنش‌های واقعی برای 12 پروتئین ضروری، که از آزمایش‌ها به دست آمد، محققان دریافتند که این مدل دارای نرخ‌های مثبت کاذب مشابه نرخ‌های مثبت واقعی است. این نشان می دهد که این مدل قادر به شناسایی مداوم تعاملات واقعی بین داروهای موجود و اهداف آنها نیست.

محققان با استفاده از اندازه‌گیری که اغلب برای ارزیابی مدل‌های محاسباتی به کار می‌رود، معروف به auROC، عملکرد ضعیفی هم پیدا کردند. کالینز می‌گوید: << با استفاده از این شبیه‌سازی‌های اتصال مولکولی استاندارد، مقدار auROC تقریباً 0.5 به دست آوردیم که اساساً نشان می‌دهد که بهتر از حدس تصادفی نیست! >>

محققان با استفاده از این رویکرد مدل سازی با ساختارهای پروتئینی که به طور تجربی تعیین شده اند، به جای ساختارهای پیش بینی شده توسط AlphaFold، نتایج مشابهی دریافت کردند.

کالینز می‌گوید: «به نظر می‌رسد که AlphaFoldتقریباً به خوبی ساختارهای تعیین‌شده تجربی را ارائه می‌دهد، اما اگر می‌خواهیم از AlphaFold به طور مؤثر و گسترده در کشف دارو استفاده کنیم، باید کار بهتری با مدل‌های اتصال مولکولی انجام دهیم.»

پیش بینی های بهتر

یکی از دلایل احتمالی عملکرد ضعیف مدل این است که ساختارهای پروتئینی وارد شده به مدل ثابت هستند، در حالی که در سیستم‌های بیولوژیکی، پروتئین‌ها انعطاف‌پذیر هستند و اغلب تنظیمات خود را تغییر می‌دهند.

برای تلاش برای بهبود میزان موفقیت رویکرد مدل‌سازی خود، محققان پیش‌بینی‌ها را از طریق چهار مورد اضافه انجام دادند:

وونگ می‌گوید: (مدل‌های یادگیری ماشین نه تنها اشکال، بلکه خواص شیمیایی و فیزیکی فعل و انفعالات شناخته‌شده را نیز یاد می‌گیرند و سپس از آن اطلاعات برای ارزیابی مجدد پیش‌بینی‌های اتصال استفاده می‌کنند. ما متوجه شدیم که اگر بخواهید تعاملات را با استفاده از این مدل‌های اضافی فیلتر کنید، می‌توانید نسبت بیشتری از مقدار مثبت واقعی به مثبت کاذب را دریافت کنید.)

به گفته محققان، با این حال، قبل از استفاده از این نوع مدل‌سازی برای شناسایی موفقیت‌آمیز داروهای جدید، هنوز به بهبود بیشتری نیاز است. یکی از راه‌های انجام این کار، آموزش مدل‌ها بر روی داده‌های بیشتر، از جمله ویژگی‌های بیوفیزیکی و بیوشیمیایی پروتئین‌ها و ترکیب‌بندی‌های مختلف آن‌ها، و اینکه چگونه این ویژگی‌ها بر اتصال آن‌ها با ترکیبات دارویی بالقوه تأثیر می‌گذارند، می باشد.

پروفسور روی کیشنی، می گوید: این مطالعه به ما امکان می دهد بفهمیم که تا چه اندازه از تحقق پارادایم های کامل مبتنی بر یادگیری ماشینی برای توسعه دارو فاصله داریم و معیارهای تجربی و محاسباتی فوق العاده ای را برای تحریک و هدایت و هدایت پیشرفت به سمت این چشم انداز آینده ارائه می دهد.

کالینز می‌گوید با پیشرفت‌های بیشتر، دانشمندان ممکن است بتوانند از قدرت ساختارهای پروتئینی تولید شده توسط هوش مصنوعی برای کشف نه تنها آنتی‌بیوتیک‌های جدید، بلکه داروهایی برای درمان انواع بیماری‌ها، از جمله سرطان، استفاده کنند. او می‌گوید:(ما خوش‌بین هستیم که با بهبود رویکردهای مدل‌سازی و گسترش قدرت محاسباتی، این تکنیک‌ها در کشف دارو اهمیت فزاینده‌ای پیدا می‌کنند. با این حال، ما راه درازی برای دستیابی به پتانسیل کامل در کشف داروی سیلیکو داریم.)

  • افشین رفوآ
  • ۰
  • ۰

سلام دوستان...

با آموزش پایتون همراه ما باشید :

قسمت اول آموزش Python

 

آموزش توابع در پایتون

تابع یک قطعه کد سازمان دهی شده است که می توان آن را بارها فراخوانی کرده و مورد استفاده قرار داد. تابع به منظور اجرای یک عملیات خاص بکار می رود. توابع modularity (قابلیت تفکیک مولفه های سیستم و ادغام مجدد آن ها؛ در واقع modularity معماری نرم افزار را به کامپوننت هایی تقسیم می کند که پیاده سازی و نگهداشت آن را آسان می سازد) برنامه و قابلیت استفاده ی مجدد آن را بالا می برد. همان طور که می دانید، پایتون توابع درون ساخته ی متعددی همچون print() ارائه می دهد، با این حال کاربر می تواند توابع خود را تعریف کند که به آن توابع user-defined یا توابع کاربر می گویند.

 

تعریف تابع

می توانید توابعی تعریف کنید که عملیات دلخواه را انجام دهد. برای تعریف توابع کاربر، بایستی از قوانین زیر پیروی کرد:

  1. قطعه کد تابع باید با کلیدواژه ی def آغاز شود. به دنبال آن اسم تابع و پرانتز درج می شود ( () ).

  2. پارامترهای ورودی یا آرگومان ها باید داخل پرانتز قرار داده شوند.

  3. اولین دستور تابع می تواند یک دستور اختیاری باشد - function_docstring.

  4. قطعه کد داخل ساختمان یا بدنه ی تابع با دو نقطه آغاز می شود، سپس دستوراتی که زیر آن قرار می گیرند، همگی توگذاشته می شوند.

  5. دستور return اجرای تابع را متوقف کرده نتیجه را برمی گرداند (جمع بندی یک سری عملیات و یا کارهایی رو نمایش می دهد) و در صورت نیاز یک عبارت را به فراخواننده پاس می دهد. دستور return None نیز یعنی هیچ مقداری را به عنوان خروجی برنگرداند.

نحوه ی نگارش (syntax):

def functionname( parameters ):

"function_docstring"

function_suite

return [expression]

پارامترها به ترتیبی که تعریف شده اند، عمل می کنند و بایستی آن ها را به همان ترتیبی که تعریف شده اند، مقداردهی کرد.

 

مثال

تابع زیر یک رشته به عنوان ورودی پذیرفته و آن را چاپ می کند.

def printme( str ):

"This prints a passed string into this function"

print str

return

 

آموزش پایتون : فراخوانی تابع

با تعریف تابع فقط یک اسم به آن تخصیص می یابد، سپس پارامترهای آن مشخص شده و ساختمان کد ایجاد می شود. پس از اینکه ساختمان تابع ایجاد می شود، می توانید آن را از تابع دیگر صدا بزنید یا آن را مسقیم از پنجره ی prompt پایتون فراخوانی کنید. مثال زیر تابع printme() را صدا می زند:

#!/usr/bin/python

# Function definition is here

def printme( str ):

"This prints a passed string into this function"

print str

return;

# Now you can call printme function

printme("I'm first call to user defined function!")

printme("Again second call to the same function")

نتیجه ی زیر حاصل می گردد:

I'm first call to user defined function!

Again second call to the same function

 

ارسال پارامتر با reference در برابر ارسال با مقدار

تمامی پارامترها (آرگومان ها) در زبان پایتون با reference پاس داده می شوند، بدین معنی که اگر آنچه یک پارامتر به آن اشاره دارد را در تابع تغییر دهید، تغییر در تابع فراخواننده نیز منعکس می شود.

#!/usr/bin/python

# Function definition is here

def changeme( mylist ):

"This changes a passed list into this function"

mylist.append([1,2,3,4]);

print "Values inside the function: ", mylist

return

# Now you can call changeme function

mylist = [10,20,30];

changeme( mylist );

print "Values outside the function: ", mylist

در اینجا reference به شی ارسالی حفظ شده و مقادیر جدید را به همان شی الصاق می کنیم. نتیجه:

Values inside the function: [10, 20, 30, [1, 2, 3, 4]]

Values outside the function: [10, 20, 30, [1, 2, 3, 4]]

یک مثال دیگر را در زیر مشاهده می کنید که آرگومان با reference ارسال شده و reference مورد نظر در تابع فراخوانده شده، بازنویسی (overwrite) شده است.

#!/usr/bin/python

# Function definition is here

def changeme( mylist ):

"This changes a passed list into this function"

mylist = [1,2,3,4]; # This would assig new reference in mylist

print "Values inside the function: ", mylist

return

# Now you can call changeme function

mylist = [10,20,30];

changeme( mylist );

print "Values outside the function: ", mylist

پارامتر mylist، نسبت به تابع changeme محلی (local) می باشد. ویرایش پارامتر مزبور در تابع موردنظر هیچ تاثیری بر روی mylist نمی گذارد. درواقع تابع هیچ کار خاصی انجام نمی دهد، نتیجه ای که از آن حاصل می گردد به شرح زیر می باشد:

Values inside the function: [1, 2, 3, 4]

Values outside the function: [10, 20, 30]

 

آرگومان های تابع

می توان یک تابع را به وسیله ی نوع آرگومان های لیست شده در زیر، فراخوانی کنید:

  1. آرگومان های الزامی

  2. آرگومان های Keyword

  3. آرگومان های پیش فرض

  4. آرگومان های با طول متغیر (Variable-length)

 

آرگومان های الزامی

آرگومان های الزامی، آرگومان هایی هستند که به ترتیب (تعریف شده) به تابع مورد نظر پاس داده می شوند. در اینجا، تعداد آرگومان هایی که در فراخوانی تابع مشخص می شود باید با تعریف تابع منطبق باشد. برای فراخوانی تابع printme()، می بایست یک آرگومان به آن ارسال کنید، در غیر این صورت خطای نحوی (syntax error) می دهد:

#!/usr/bin/python

# Function definition is here

def printme( str ):

"This prints a passed string into this function"

print str

return;

# Now you can call printme function

printme()

 

آرگومان های keyword

آرگومان های keyword در فراخوانی توابع مورد استفاده قرار می گیرد. هنگامی که از آرگومان های keyword در فراخوانی تابع استفاده می کنید، فراخواننده آرگومان ها را به وسیله ی اسم آن (پارامتر) شناسایی می کند. این کار به شما اجازه می دهد ترتیب آرگومان ها را تغییر دهید، زیرا که مفسر پایتون قادر است با استفاده از کلیدواژه ای ارائه شده، مقادیر را به پارامترها match (وصل) کند. می توانید تابع printme() را به ترتیب زیر فراخوانی کنید:

#!/usr/bin/python

# Function definition is here

def printme( str ):

"This prints a passed string into this function"

print str

return;

# Now you can call printme function

printme( str = "My string")

کد بالا پس از اجرا، نتیجه ی زیر را بدست می دهد:

My string

مثال زیر تصویر روشن تری از آن ارائه می دهد. توجه داشته باشید که ترتیب پارامترها اهمیتی ندارد.

#!/usr/bin/python

# Function definition is here

def printinfo( name, age ):

"This prints a passed info into this function"

print "Name: ", name

print "Age ", age

return;

# Now you can call printinfo function

printinfo( age=50, name="miki" )

خروجی:

Name: miki

Age 50

آرگومان پیش فرض آرگومانی است که در صورت مشخص نکردن مقداری در فراخوانی تابع برای آن، به صورت خودکار مقدار پیش فرض می پذیرد. نمونه ی زیر نشان می دهد که مقداری برای آرگومان age (در فراخوانی تابع) تعریف نشده، با این وجود تابع دوم مقدار 50 را برای آن چاپ می کند:

#!/usr/bin/python

# Function definition is here

def printinfo( name, age = 35 ):

"This prints a passed info into this function"

print "Name: ", name

print "Age ", age

return;

# Now you can call printinfo function

printinfo( age=50, name="miki" )

printinfo( name="miki" )

نتیجه:

Name: miki

Age 50

Name: miki

Age 35

 

دوره آموزش پایتون: آرگومان های با طول متغیر (Variable-length arguments)

گاهی لازم است یک تابع را با آرگومان های بیشتری نسبت به آنچه در زمان تعریف تابع مشخص کردید، پردازش و فراخوانی کنید. این دست از آرگومان ها در اصطلاح آرگومان های با طول متغیر (variable length) خوانده می شوند و برخلاف آرگومان های الزامی و پیش فرض، در تعریف تابع ذکر نمی شوند. نحوه ی نگارش:

def functionname([formal_args,] *var_args_tuple ):

"function_docstring"

function_suite

return [expression]

علامت (*) پیش از اسم متغیر (vartuple) که دارنده ی آرگومان های متغیر nonkeyword است، درج می شود. لازم به ذکر است که این tuple، چنانچه به هنگام فراخوانی تابع (function call) هیچ آرگومان اضافی مشخص نشود، تهی باقی می ماند. مثال:

#!/usr/bin/python

# Function definition is here

def printinfo( arg1, *vartuple ):

"This prints a variable passed arguments"

print "Output is: "

print arg1

for var in vartuple:

print var

return;

# Now you can call printinfo function

printinfo( 10 )

printinfo( 70, 60, 50 )

کد فوق نتیجه ی زیر را بدست می دهد:

Output is:

10

Output is:

70

60

50

 

توابع بی نام (Anonymous functions)

توابعی که به شیوه ی معمول و با درج کلیدواژه ی def تعریف نشده اند، توابع anonymous نام دارند. برای ایجاد توابع anonymous، بایستی از کلیدواژه ی lambda استفاده نمود.

  1. توابعی که به شکل lambda تعریف شده اند، قادراند چندین آرگومان به عنوان ورودی بپذیرند، اما فقط یک مقدار را در قالب عبارت به عنوان خروجی برمی گرداند. همچنین نمی توانند چندین دستور یا عبارت درخود داشته باشند.

  2. یک تابع anonymous نمی تواند به صورت مستقیم برای چاپ (print) فراخوانی شود، زیرا lambda به یک عبارت نیاز دارد.

  3. توابع lambda دارای فضای نامی محلی (local namespace) خود هستند و نمی توانند به متغیرهایی که در لیست پارامتر خود آورده نشده و نیز متغیرهایی که در فضای نامی سراسری هستند، دسترسی داشته باشند.

  4. اگرچه بنظر می رسد که lambda ها، نسخه ی تک خطی از یک تابع هستند، با این وجود معادل دستورات درون برنامه ای (in-line statement) در زبان های C و C++ محسوب نمی شوند که هدف از آن افزایش کارایی تابع به وسیله ی ارسال پشته ی تخصیص تابع هنگام فراخوانی است.

 

ساختار نگارشی

سینتکس توابع lambda همان طور که در نمونه ی زیر مشاهده می کنید، شامل تنها یک خط می باشد:

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

در زیر نحوه ی عملکرد تابعی که به صورت lambda تعریف شده باشد، را مشاهده می کنید:

#!/usr/bin/python

# Function definition is here

sum = lambda arg1, arg2: arg1 + arg2;

# Now you can call sum as a function

print "Value of total : ", sum( 10, 20 )

print "Value of total : ", sum( 20, 20 )

نتیجه:

Value of total : 30

Value of total : 40

 

دستور return

دستور [expression] return عملیات تابع را به پایان می رساند و خروجی آن را برمی گرداند و در صورت لزوم یک عبارت را به فراخواننده ارسال می نماید. دستور return ای که جلوی آن هیچ آرگومانی درج نشده باشد برابر با return none می باشد. مثال های بالا هیچ مقداری را برنمی گردانند. مثال زیر یک مقدار را از تابع به صورت زیر برمی گرداند:

#!/usr/bin/python

# Function definition is here

def sum( arg1, arg2 ):

# Add both the parameters and return them."

total = arg1 + arg2

print "Inside the function : ", total

return total;

# Now you can call sum function

total = sum( 10, 20 );

print "Outside the function : ", total

نتیجه ی آن را در زیر مشاهده می کنید:

Inside the function : 30

Outside the function : 30

 

حوزه ی دسترسی متغیر (variable scope)

امکان دسترسی به تمامی متغیرهایی که در مکان های مختلف یک برنامه قرار دارند، وجود ندارد. قابلیت دسترسی به یک متغیر درواقع به مکان تعریف متغیر بستگی دارد. حوزه ی دسترسی یا scope تعیین می کند که در چه قسمت هایی از برنامه می توانید به شناسه ی مورد نظر دسترسی داشته باشید. در کل دو نوع حوزه ی دسترسی در پایتون وجود دارد:

  1. متغیرهای سراسری (global)

  2. متغیرهای محلی (local)

 

مقایسه ی متغیر سراسری با محلی

متغیرهایی که داخل بدنه ی تابع تعریف می شوند، حوزه ی دسترسی آن ها محلی محسوب می شود. متغیرهایی که بیرون بدنه یا ساختمان تابع تعریف می شوند، متغیرهای سراسری نامیده می شوند. متغیرهای محلی را فقط می توان درون تابعی که در آن (متغیر) تعریف شده، مورد دسترسی قرار داد، در حالی که متغیرهای سراسری از تمام بخش های برنامه (توسط تابع) قابل دستیابی می باشد. به هنگام فراخوانی تابع، متغیرهای تعریف شده داخل آن همگی قابل دسترسی می باشند (در حوزه ی دسترسی قرار می گیرند). مثال:

#!/usr/bin/python

total = 0; # This is global variable.

# Function definition is here

def sum( arg1, arg2 ):

# Add both the parameters and return them."

total = arg1 + arg2; # Here total is local variable.

print "Inside the function local total : ", total

return total;

# Now you can call sum function

sum( 10, 20 );

print "Outside the function global total : ", total

نتیجه:

Inside the function local total : 30

Outside the function global total : 0

آموزش پایتون ادامه دارد

  • افشین رفوآ