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


معرفی هفت منبع داده اقلیمی رایگان جهانی

چرخش قطبی در مقابل چرخش خورشید آهنگ

آنالیز تصویر شئی گرا (OBIA)

تعامل انرژی در سنجش از دور : انعکاس، جذب و گسیل انرژی

معرفی 6 منبع رایگان داده های لیداری

آشنایی با SAR با استفاده از مثال

برنامه لندست : 50 سال آرشیو از تصاویر سطح زمین

دانلود رایگان نرم افزار ArcGIS Pro 2.8

ابر نقطه ای چیست ؟

انواع نقشه ها در سیستم اطلاعات جغرافیایی: 25 روش مختلف و جذاب برای نمایش داده های مکانی در GIS

تصحیحات اتمسفری در سنجش از دور چیست ؟

سیستم های تصویر نقشه چیست ؟ و چرا بعضا برای ما گمراه کننده هستند ؟

ژئودزی: ریاضیات مکان

گیرنده های GPS چگونه کار می کنند ؟ سه گانه سازی در مقابل مثلث بندی

مأموریت توپوگرافی رادار شاتل (SRTM)

چرا پنجره اتمسفری در علوم زمین دارای اهمیت است ؟

تصاویر ماهواره ای DigitalGlobe: وردویو(Worldview)، ژئوآی(GeoEye) و آیکونوس (IKONOS)

راهنمای طبقه بندی نزدیکترین همسایه در e-Cognition

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


آموزش برنامه نویسی پایتون بخش بیست و پنجم
توابع با و بدون مقادیر برگشتی (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
>>>

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه سرخس به شماره NJ-41-13

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

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

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

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

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

دانلود نرم افزار Envi 5.6

نقشه های موقعیت سیاسی منطقه مطالعاتی بخش دوم

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه زاهدان به شماره NH-41-9

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

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه سرآوان به شماره NG-41-2

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه شاهرخت به شماره NI-41-9

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه مشهد به شماره NJ-40-16

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

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

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

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

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

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

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

نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه جازموریان به شماره NG-40-4

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه پیوشک به شماره NG-40-12

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه تربت جام به شماره NI-41-1

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

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

دانلود و روش نصب نرم افزار Global Mapper 24

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

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

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

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

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

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

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

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

آموزش تحلیل های هیدرولوژی در نرم افزار Arc GIS Desktop

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

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

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

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

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