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


جدول تناوبی تحلیل های مکانی در GIS

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

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

آنالیز تصویر شئی گرا (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


آموزش برنامه نویسی پایتون بخش بیست و هفتم
محدوده عملکرد متغیرها (Scope of variables)
حیطه عملکرد متغیرها بخشی از برنامه است که متغیرها می توانند مورد ارجاع قرار بگیرند. در حقیقت در این حیطه یا scope متغیرها قابل دسترسی و استفاده هستند. در این بخش در مورد حیطه عملکرد متغیرها، در زمینه توابع بحث خواهیم کرد. متغیرهایی که در داخل توابع ایجاد و تعریف می شوند را متغیرهای محلی یا local variable می نامند. متغیرهای محلی تنها در داخل تابع قابل دسترسی و دستیابی می باشند. حیطه عمل یک متغیر محلی از زمان ایجاد آن متغیر تا جایی که تابع پایان می پذیرد ادامه خواهد داشت. در زبان برنامه نویسی پایتون، شما می توانید از متغیرهای سراسری نیز استفاده کنید. این متغیرها در بیرون از توابع تعریف می شوند و در تمامی توابع دیگر نیز قابل دسترس می باشند. کدهای زیر را مد نظر قرار بگیرید:
1 globalVar = 1
2 def f1():
3 localVar = 2
4 print(globalVar)
5 print(localVar)
6
7 f1()
8 print(globalVar)
9 print(localVar) # Out of scope, so this gives an error
یک متغیر سراسری (global variable) در خط 1 برنامه فوق ایجاد شده است. این متغیر در داخل تابع f1 در خط 4 قابل دسترسی می باشد و همچنین در بیرون از این تابع در خط 8 قابل دسترسی است. متغیر محلی (local variable) به نام localVar در خط 3 در داخل تابع f1 تعریف شده است. این متغیرها تنها درون تابع f1 قابل دسترسی هستند. همانند حالتی که در خط 5 مورد استفاده قرار گرفته است. تلاش برای دسترسی به متغیر محلی localVar در بیرون از تابع f1 در خط 9 منجر به خطا خواهد شد زیرا امکان دسترسی به متغیر محلی که درون تابع تعریف شده باشد از بیرون از تابع وجود ندارد. در این حالت گفته می شود که حیطه عملکرد یا scope متغیر localVar تنها در داخل تابع می باشد و در بیرون از تابع امکان دسترسی و استفاده از این متغیر وجود ندارد.
1 x = 1
2 def f1():
3 x = 2
4 print(x) # Displays 2
5
6 f1()
7 print(x) # Displays 1
در برنامه فوق همانطور که مشاهده می شود، متغیر سراسری یا global به نام x در خط 1 ایجاد شده است. علاوه بر آن متغیر دیگری به نام x به صورت یک متغیر محلی در خط 3 مشخص شده است. این نقطه به بعد متغیر جهانی x دیگر در درون تابع قابل دسترسی نمی باشد در حالی که در بیرون از تابع متغیر سراسری x همچنان در دسترس بوده و قابل استفاده می باشد. در نتیجه در صورتی که متغیر محلی همنام با متغیر سراسری وجود داشته باشد، در scope متغیر محلی، اولویت به متغیر محلی داده شده و دیگر دسترسی به متغیر سراسری وجود ندارد در حالی که در بیرون از scope متغیر محلی، متغیر سراسری همچنان در دسترس خواهد بود.
1 x = eval(input(“Enter a number: “))
2 if x > 0:
3 y = 4
4
5 print (y) # This gives an error if y is not created
در برنامه فوق در صورتی که متغیر x>0 باشد، متغیر y ایجاد می گردد. در صورتی که یک عدد مثبت برای x در خط 1 وارد کنید، برنامه به درستی کار خواهد کرد. اما اگر یک عدد غیر مثبت وارد کنید، خط 5 خطا خواهد داد زیرا متغیر y ایجاد نشده و متغیری به این نام وجود ندارد.
1 sum = 0
2 for i in range(5):
3 sum += i
4
5 print(i)
در برنامه فوق متغیر i در درون یک حلقه ایجاد شده است. بعد از آنکه حلقه به اتمام برسد، مقدار متغیر i برابر با 4 می باشد. در نتیجه در خط 5 مقدار 4 برای متغیر i چاپ می شود. شما می توانید یک متغیر محلی را در حیطه سراسری قرار دهید. همچنین می توانید متغیری را در درون یک تابع ایجاد کنید و در بیرون از تابع مورد استفاده قرار دهید. برای این کار نیاز به استفاده از دستور global خواهید داشت. برای آنکه متغیرهای محلی را به متغیرهای سراسری تبدیل کنید بایستی از کلمه کلیدی global استفاده نموده و بعد از آن لیست متغیرهایی که قصد تبدیل scope از حالت local به global را دارید را وارد نموده و با کاما آنها را از یکدیگر جدا کنید. در مثال زیر این وضعیت نشان داده شده است:
1 x = 1
2 def increase():
3 global x
4 x = x + 1
5 print(x) # Displays 2
6
7 increase()
8 print(x) # Displays 2
در مثال فوق متغیر سراسری x در خط 1 ایجاد شده است و در خط 3 این متغیر به صورت سراسری اعلام شده و در خط 4 مورد استفاده قرار گرفته و به مقدار آن 1 واحد افزوده شده است. در نتیجه برنامه در خط 5 و 8 مقدار 2 را برای متغیر x چاپ می کند. در صورتی که از کلمه کلیدی global در ابتدای تابع increase استفاده نشود، برنامه با خطا متوقف خواهد شد و اعلام خواهد کرد که متغیری به نام x پیش از آنکه تعریف شده باشد به آن ارجاع داده شده است.
UnboundLocalError: local variable ‘x’ referenced before assignment
احتیاط
اگرچه متغیرهای سراسری مجاز هستند و ممکن است متغیرهای سراسری را در سایر برنامه ها ببینید، اما استفاده از آنها در توابع ایده خوبی نیست، زیرا استفاده زیاد از این روش می تواند برنامه را با خطاهای احتمالی رو به رو سازد. در هر صورت بهتر است از ثابت های سراسری استفاده شود در نتیجه همه توابع موجود در ماژول می توانند از آنها استفاده کنند و بین همه توابع این متغیرها می توانند به اشتراک گذاشته شوند.
به نظر شما چه خطایی در کد زیر وجود دارد ؟
1 def function():
2 x = 4.5
3 y = 3.4
4 print(x)
5 print(y)
6
7 function()
8 print(x)
9 print(y)
آیا کد زیر اجرا می شود ؟ در صورتی که اجرا شود چه نتیجه ای به دنبال خواهد داشت ؟
x = 10
if x < 0:
y = -1
else:
y = 1
print(“y is”, y)
آرگومان های پیش فرض (Default Arguments)
پایتون به شما امکان تعریف توابع به همراه آرگومان های پیش فرض را می دهد. مقادیر پیش فرض در زمان فراخوانی توابعی که دارای آرگومان ورودی نباشند به پارامترهای تعریف شده ارسال شده و مورد استفاده قرار می گیرند. در کادرز زیر چگوننگی تعریف توابعی که دارای آرگومان های پیش فرض هستند و نحوه فراخوانی آنها نشان داده شده است.
1 def printArea( ):
2 area = width * height
3 print(“width:”, width, “\theight:”, height, “\tarea:”, area)
4
5 printArea() # Default arguments width = 1 and height = 2
6 printArea (4, 2.5) # Positional arguments width = 4 and height = 2.5
7 printArea (height = 5 , width = 3) # Keyword arguments width
8 printArea ( width = 1.2) # Default height = 2
9 printArea (height = 6.2) # Default width = 1
در خط 1 برنامه فوق، تابع printArea با پارامترهای width و height تعریف شده اند. پارامتر width دارای مقدار پیش فرض 1 و پارامتر height دارای مقدار پیش فرض 2 می باشد. در خط 5 تابع، احضار یا فراخوانی می شود بدون آنکه پارامترهای ورودی آن تعیین گردد که در نتیجه از پارامترهای پیش فرض استفاده خواهد شد. در خط 6، تابع احضار می شود و از مقدار 5 برای پارامتر height و مقدار 3 برای پارامتر width استفاده می شود. در خط 7 تابع با تعریف مقدار 3 برای پارامتر width و مقدار 5 برای height فراخوانی می شود. توجه داشته باشید که می توانید در زبان برنامه نویسی پایتون آرگومان ها را با تعیین نام هر پارامتر به صورتی که در خط 8 و 9 نشان داده شده است، وارد کنید.
نکته
یک تابع ممکن است پارامترهای پیش فرض را با سایر پارامترها اشتباه کند. در این حالت پارامترهای غیر پیش فرض بایستی پیش از پارامترهای پیش فرض تعریف شده باشند.
نکته
بسیاری از زبان های برنامه نویسی از قابلیتی کاربردی پشتیبانی می کنند که به شما امکان می دهد دو تابع همنام را در یک ماژول تعریف کنید، اما این قابلیت در زبان برنامه نویسی پایتون پشتیبانی نمی شود. با استفاده از آرگومان های پیش فرض، می توانید یک تابع را یکبار تعریف نموده و آن را به روش های مختلفی فراخوانی نمائید. این حالت نتایجی شبیه به تعریف چندین تابع همنام در سایر زبان های برنامه نویسی را به دنبال خواهد داشت. در صورتی که در زبان برنامه نویسی پایتون چندین تابع همنام، تعریف کرده باشید، آخرین تعریف از تابع جایگزین توابع قبلی شده و فرم آن تابع مورد استفاده قرار می گیرد.
نتایج خروجی از برنامه زیر چیست؟
def f(w = 1, h = 2):
print(w, h)
f()
f(w = 5)
f(h = 24)
f(4, 5)
خطاهای موجود در برنامه زیر را تشخیص داده و برطرف کنید:
1 def main():
2 nPrintln(5)
3
4 def nPrintln(message = “Welcome to Python!”, n):
5 for i in range(n):
6 print(message)
7
8 main() # Call the main function
در صورتی که در یک ماژول دو تابع همنام تعریف کنید چه اتفاقی خواهد افتاد ؟

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

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

آموزش ویدئویی تحلیل های هیدرولوژی در نرم افزار ArcGIS Pro

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

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

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

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

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

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

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

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

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

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

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

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

نقشه های زمین شناسی اسکن شده ایران در مقیاس 1:250000

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

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

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

تبدیل مختصات در نرم افزار Global Mapper

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

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

نرم افزار Z-scale Estimator

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

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

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

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

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

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

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

مدلسازی سایه-اندازی ساختمان ها در چشم اندازهای شهری در نرم افزار ArcGIS Pro

روش نصب نرم افزار ArcGIS Pro 3.0.2

روش نصب نرم افزار Arc GIS Pro 2.8

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

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

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

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

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

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

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