آموزش برنامه نویسی پایتون بخش بیست و پنجم


نقشه های کروپلت – مقدمه ای بر طبقه بندی داده

تصاویر چند طیفی (Multi-spectral) در مقایسه با تصاویر ابر طیفی (Hyper-spectral)

فتوگرافی هوایی (Aerial Photography) در مقابل ارتوفوتوگرافی (Orthophotography)

راهنمای جامع لیدار (Light Detection and Ranging – LiDAR)

سنجش از دور چیست ؟

منابع داده GIS رایگان در سطح جهانی : داده های رستری و برداری

مقدمه ای بر سرویس های نقشه کشی تحت وب (WMS)

علم داده مکانی چیست ؟

تحلیل عوارض سه بعدی

ژئوانالیتیکس: آنالیز داده های مکانی حجیم

فرمت های داده در سیستم اطلاعات جغرافیایی بخش سوم

فرمت های داده در سیستم اطلاعات جغرافیایی بخش دوم

فرمت های GIS و پسوندهای داده مکانی بخش اول

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

انتشار نخستین تصاویر لندست 9 توسط سازمان هوا و فضای آمریکا (NASA)

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

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

آموزش برنامه نویسی پایتون بخش بیست و هفتم

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

آموزش برنامه نویسی پایتون بخش بیست و پنجم

معرفی سامانه WEB GIS

نقشه متوسط دمای سطح زمین ایران (LST)

آموزش برنامه نویسی پایتون بخش بیست و چهارم

آموزش برنامه نویسی پایتون بخش یازدهم (تبدیل نوع و گرد کردن)

آموزش برنامه نویسی پایتون بخش دهم (اپراتورهای انتساب گمارشی)

آموزش برنامه نویسی پایتون بخش نهم (نمادهای علمی، ارزیابی عبارات و اولویت اجرای اپراتورها)

برنامه نویسی پایتون بخش هشتم (انتساب چندگانه، ثابت ها، نوع-داده های عددی و اپراتورها)

برنامه نویسی پایتون بخش هفتم (متغیرها، دستور انتساب و عبارات)

برنامه نویسی پایتون بخش ششم (Identifiers)

معرفی توانایی ها و ویژگی های ماهواره لندست 9

ماهواره لندست 9

نرم افزار Arc GIS Desktop در مقابل Arc GIS Pro

آموزش برنامه نویسی پایتون بخش چهارم (برنامه نویسی مقدماتی در پایتون)

آموزش برنامه نویسی پایتون بخش سوم (محاسبات ریاضی، استایل و خطاها در برنامه نویسی)

آموزش برنامه نویسی پایتون بخش دوم (شروع به کار با پایتون)

ابزارهای برنامه نویسی (Programming Tools)

سیکل توسعه نرم افزار

آموزش برنامه نویسی پایتون بخش اول

مقدمه ای بر برنامه نویسی کامپیوتر (بخش مبانی برنامه نویسی)

مقدمه ای بر برنامه نویسی کامپیوتر بخش سخت افزار


آموزش برنامه نویسی پایتون بخش بیست و پنجم
توابع با و بدون مقادیر برگشتی (Return Value)
یک تابع در زبان برنامه نویسی پایتون الزاماً نیاز به بازگرداندن مقداری ندارد. در ادامه مثالی آورده شده که یک تابع با مقدار برگشتی را نشان می دهد. در این بخش نشان می دهیم چطور یک تابع بدون مقدار برگشتی را می توان تعرف نموده و آن را احضار کرد. این چنین توابع را معمولاً توابع تهی یا void function می نامند. در جعبه زیر برنامه ای را می بینید که به نام printGrade تعریف شده و رتبه معادل هر نمره را پرینت می کند.
1 # Print grade for the score
2 def printGrade(score):
3 if score >= 90.0:
4 print(‘A’)
5 elif score >= 80.0:
6 print(‘B’)
7 elif score >= 70.0:
8 print(‘C’)
9 elif score >= 60.0:
10 print(‘D’)
11 else:
12 print(‘F’)
13
14 def main():
15 score = eval(input(“Enter a score: “))
16 print(“The grade is “, end = ” “)
17 printGrade(score)
18
19 main() # Call the main function
تابع printGrade هیچ مقداری را برگشت نمی دهد. این تابع در برنامه فوق در خط 17 در داخل بدنه main فراخوانی شده است. برای مقایسه بین تابعی که هیچ مقداری را بر نمی گرداند و تابعی که مقداری را برگشت می دهد، اجازه دهید تابع printGrade را مجدداً به گونه ای بازنویسی کنیم که دارای مقدار برگشتی باشد. اکنون تابعی به نام getGrade را خواهیم نوشت به گونه ای که دارای مقایر برگشتی نیز باشد:
1 # Return the grade for the score
2 def getGrade (score):
3 if score >= 90.0:
4 return ‘A’
5 elif score >= 80.0:
6 return ‘B’
7 elif score >= 70.0:
8 return ‘C’
9 elif score >= 60.0:
10 return ‘D’
11 else:
12 return ‘F’
13
14 def main ():
15 score = eval(input(“Enter a score: “))
16 print(“The grade is”, )
17 getGrade (score)
18 main() # Call the main function
تابع getGrade که در خطوط 2-12 تعریف شده است. بر اساس مقدار عددی نمره وارد شده، یک کاراکتر معادل آن نمره را برگشت می دهد. این تابع در خط 17 در داخل بدنه تابع main فراخوانی می شود. تابع getGrade یک کاراکتر معادل نمره وارده را برمیگرداند که مقدار برگشت داده شده تنها می تواند به صورت یک کاراکتر مورد استفاده قرار بگیرد. تابع printGrade مقدار عددی را برگشت نمی دهد در صورتی که یک مقدار رشته ای به صورت کاراکتر معادل نمره وارد شده را برگشت می دهد.
به لحاظ فنی، هر تابع در زبان برنامه نویسی پایتون، دارای یک مقدار برگشت داده شده می باشد. خواه از کلمه کلیدی return در انتهای آن تابع استفاده کرده باشید و خواه از return استفاده نکرده باشید. در صورتی که در انتهای تابع در زبان برنامه نویسی پایتون کلمه کلیدی return را استفاده نکرده باشید باز هم تابع دارای مقدار برگشتی None می باشد. در نتیجه به همین دلیل است که در زبان برنامه نویسی پایتون به این توابع None Function گفته می شود. برای آنکه متوجه شوید که توابع در پایتون حتی اگر از کلمه کلیدی return استفاده نکرده باشید مقدار None را برگشت می دهند، می توانید تابع احضار شده را به یک متغیر انتساب دهید و از این طریق متوجه شوید که مقدار None در داخل متغیر قرار می گیرد. به عنوان مثال در صورتی که برنامه زیر را اجرا کنید متوجه خواهید شد که مقدار None تولید می گردد.
def sum(number1, number2):
total = number1 + number2
print(sum(1, 2))
با اجرای کد فوق خواهید دید که خروجی مقدار None می باشد، زیرا تابع sum دارای کلمه کلیدی return یا مقدار برگشتی نمی باشد و به صورت پیش فرض، مقدار None برگشت داده می شود.
نکته
استفاده از دستور return در تابع None function نیاز نمی باشد، اما از این دستور می توان برای متوقف کردن اجرای تابع و انتقال کنترل اجرای برنامه به فراخواننده تابع استفاده نمود.
# Print grade for the score
def printGrade(score):
if score < 0 or score > 100:
print(“Invalid score”)
return # Same as return None
if score >= 90.0:
print(‘A’)
elif score >= 80.0:
print(‘B’)
elif score >= 70.0:
print(‘C’)
elif score >= 60.0:
print(‘D’)
else:
print(‘F’)
آرگومان های موقعیتی (Positional Argument) و کلمات کلیدی (keyword Argument)
آرگومان های توابع در پایتون می توانند به صورت آرگومان های موقعیتی و یا کلمه کلیدی به تابع در موقع احضار آن پاس داده شوند. قدرت یک تابع در کار کردن آن با پارامترها است. هنگام فراخوانی یک تابع، بایستی آرگومان ها را به پارامترهای تعریف شده در تابع پاس دهید. دو نوع آرگومان در زبان برنامه نویسی پایتون وجود دارد: آرگومان های موقعیتی و آرگومان های کلمه کلیدی. اگر از آرگومان های موقعیتی استفاده می کنید بایستی آرگومان هایی که به پارامترهای تابع ارسال می شود یا پاس داده می شود به همان ترتیبی باشند که در تعریف پارامترها، هنگام تعریف تابع، تعیین شده اند. برای مثال تابع زیر یک پیغام را n بار پرینت می کند.
def nPrintln(message, n):
for i in range(n):
print(message)
می توانید از تابع nPrintln(‘a’,3) برای پرینت ‘a’ به تعداد 3 استفاده کنید. در هر صورت تابع nPrintln(3,’a’) معنای دیگری دارد. در این حالت مقدار 3 به message ارسال شده و مقدار ‘a’ به پارامتر n ارسال می گردد. این فرم از احضار و فراخوانی تابع را به نام فراخوانی تابع با استفاده از آرگومان های ترتیبی می نامند. در صورتی که ترتیب ورود آرگومان ها رعایت نشود، عملکرد تابع با مشکل رو به رو خواهد شد و ممکن است برنامه دچار خطای گرامری یا معنایی شود. در حالتی که فراخوانی توابع از طریق آرگومان های موقعیتی انجام شود، آرگومان ها بایستی به همان ترتیبی که در بخش تعریف سرآیند تابع، تعریف شده اند و با همان Data-type ارسال شده و مورد استفاده قرار بگیرند، در غیر این صورت برنامه دچار خطا خواهد شد. روش دیگر برای احضار یک تابع استفاده از آرگومان های ورودی به روش کلمه کلیدی است. برای مثال در این حالت می توانید تابع nPrintln(n = 5 , message = ‘good’) را فراخوانی کنید. در این حالت به هر ترتیبی که بخواهید می توانید آرگومان ها را به پارامترهای تابع ارسال کنید. امکان ترکیب آرگومان های موقعیتی و کلمه کلیدی در زبان برنامه نویسی پایتون وجود دارد اما آرگومان های موقعیتی نمی توانند بعد از آرگومان های کلمه کلیدی قرار گیرند. فرض کنید سرآیند یا header یک تابع به صورت زیر باشد:
def f(p1, p2, p3):
برای احضار این تابع می توانید به صورت زیر عمل کنید:
f(30, p2 = 4, p3 = 10)
اما در صورتی که آرگومان ها را به شکل زیر ارسال کنید اشتباه خواهد بود و پایتون این شکل از ورود آرگومان ها و ارسال آنها به پارامترهای تابع را نمی پذیرد.
f(30, p2 = 4, 10)
زیرا آرگومان موقعیتی 10 بعد از آرگومان کلمه کلیدی p2 = 4 قرار گرفته است.
ارسال آرگومان با استفاده از Reference Value
هنگامی که یک تابع را به همراه آرگومان هایش فراخوانی می کنید، رفرنس هر آرگومان از طریق مقدار آن به پارامترهای داخل تابع ارسال می شود. به دلیل آنکه همه داده ها در پایتون شیء محسوب می شوند، یک متغیر برای یک شئی در اصل ارجاعی به آن شئی است. هنگامی که یک تابع را به همراه آرگومان هایش احضار می کنید، مقدار رفرنس یا ارجاعی هر آرگومان به پارامترهای داخل تابع ارسال می شود. که این حالت را در واژه شناسی زبان های برنامه نویسی به نام pass-by-value می نامند. برای ساده سازی این پروسه، اینطور گفته می شود که مقدار یک آرگومان به پارامتر ارسال شده یا پاس داده می شود. در حالی که این value در واقع reference value به آن شیء می باشد.
در صورتی که آرگومان، یک عدد و یا رشته باشد، آرگومان تحت تأثیر قرار نخواهد گرفت، فارغ از تغییراتی که بر روی پارامترهای درون تابع ایجاد شده است. در ادامه یک مثال ارائه شده است:
def main():
x = 1
print(“Before the call, x is”, x)
print(“After the call, x is”, x)
def increment(n):
print(“\tn inside the function is”, n)
main() # Call the main function
به صورتی که در نتایج خروجی مشاهده می شود، مقدار x(1) به پارامتر n ارسال می شود تا تابع increment احضار شود. پارامتر n در درون تابع 1 واحد اضافه می شود اما x تغییر نمی کند، فارغ از اینکه تابع چه عملکردی دارد. دلیل آن است که اعداد و رشته ها در زبان برنامه نویسی پایتون به عنوان اشیاء تغییر ناپذیر شناخته می شوند. محتوای اشیای تغییر ناپذیر قابل تغییر نمی باشند. هر زمانی که مقدار جدیدی به متغیر نسبت داده شود، پایتون یک شیء جدید ایجاد می کند و رفرنس شیء جدید را به متغیر نسبت می دهد. کدهای زیر را در نظر بگیرید:
>>> x = 4
>>> y = x
>>> id(x) # The reference of x
505408920
>>> id(y) # The reference of y is the same as the reference of x
505408920
>>>
شما x را به y نسبت می دهید و اکنون هر دو متغیر x و y یه یک شیء اشاره می کنند. اما در صورتی که 1 را به y اضافه کنید، یک شیء جدید ایجاد می گردد و به y نسبت داده می شود. اکنون y به یک شیء جدید اشاره دارد. در کدهای زیر این موضوع نشان داده شده است.
>>> y = y + 1 # y now points to a new int object with value 5
>>> id(y)
505408936
>>>

آموزش برنامه نویسی پایتون بخش پنجم

دانلود رایگان تصاویر ماهواره ای ژئورفرنس شده با رزولوشن بالا

آموزش صفر تا صد ترسیم نقشه های توپوگرافی حرفه ای در نرم افزار Arc GIS

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

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

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش پنجم

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

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش ششم

نرم افزار Coordinate to Map V.1 برای ترسیم عوارض برداری نقطه ای، خطی و پلیگونی بر اساس اطلاعات نقطه ای برداشت شده در عملیات نقشه برداری

آشنایی و معرفی اولیه Google Earth Engine

آموزش برنامه نویسی پایتون بخش سیزدهم (توابع مرسوم پایتون)

دانلود رایگان محاسبه سرعت دانلود و آپلود اینترنت

دانلود نقشه راههای ایران استایل 2

کارگاه آموزشی تحلیل داده های رستری با استفاده از زبان برنامه نویسی پایتون

فیلم آموزشی زمین مرجع یا ژئورفرنس لایه ها و داده های مکانی در نرم افزار Global Mapper

نقشه حوضه های هیدرولوژیکی ایران

نرم افزار Coordinate Format Changer V.1 برای تبدیل فرمت مختصات

روش دانلود لایه های برداری لایه ها و عوارض شهری OSM

آموزش برنامه نویسی پایتون بخش چهاردهم

سیستم مختصات، واژه شناسی و مفاهیم در سیستم اطلاعات جغرافیایی

دانلود نقشه راههای ایران استایل 4

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش اول

روش برش حواشی نقشه های اسکن شده در نرم افزار Global Mapper

نرم افزار Terrain Morphometer V.1 برای اجرای آنالیز مورفومتری از مدل رقومی ارتفاعی

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش هفتم

دانلود نرم افزار Arc GIS Pro 2.5 + روش نصب گام به گام

نقشه تقسیمات سیاسی ایران

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش چهارم

آموزش برنامه نویسی پایتون بخش بیست و یکم

روش های ترانسفورم (Transformation) مختصاتی در نرم افزار ArcGIS Pro

نرم افزار Slope Calculator V.1 برای استخراج نقشه شیب از مدل رقومی ارتفاعی با استفاده از 5 الگوریتم مختلف

فیلم آموزشی زمین مرجع یا ژئورفرنس لایه ها و داده های مکانی در نرم افزار Arc GIS Pro

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

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش هشتم

آموزش برنامه نویسی پایتون بخش دوازدهم (پروسه توسعه نرم افزار)

آموزش برنامه نویسی پایتون بخش هفدهم

فیلم آموزشی زمین مرجع یا ژئورفرنس لایه ها و داده های مکانی در نرم افزار Surfer

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش دوم

آموزش برنامه نویسی پایتون بخش هجدهم

دیدگاهتان را بنویسید