مدرسه زبان برنامه‌نویسی PYTHON

وبلاگی جهت معرفی - آموزش و تحلیل زبان برنامه نویسی ‍پایتون

مدرسه زبان برنامه‌نویسی PYTHON

وبلاگی جهت معرفی - آموزش و تحلیل زبان برنامه نویسی ‍پایتون

۶۴ مطلب با موضوع «آموزش دروس» ثبت شده است


y051948_photo_2019-06-27_23-25-49.jpg


۰ نظر موافقین ۰ مخالفین ۰ ۰۷ تیر ۹۸ ، ۲۱:۴۲
سعید دامغانیان

باز کردن فایل در پایتون

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

myfile = open("filename.txt")

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

شما می توانید حالت مورد استفاده برای باز کردن یک فایل را با استفاده از یک آرگومان دوم به تابع open مشخص کنید.
ارسال “r” به معنی باز در حالت خواندن است، که به طور پیش فرض است.
ارسال “w” به معنای حالت نوشتن است برای بازنویسی محتویات یک فایل.
ارسال “a” به معنای حالت افزودن برای اضافه کردن محتوای جدید به انتهای فایل است.

اضافه کردن “b” به عنوان آرگومان آن را در حالت باینری باز می کند، که برای فایل های غیر متنی (مانند فایل های تصویر و صدا) استفاده می شود.

مثلا:

# write mode
open("filename.txt", "w")

# read mode
open("filename.txt", "r")
open("filename.txt")

# binary write mode
open("filename.txt", "wb")

هنگامی که فایل باز شده و مورد استفاده قرار می گیرد، باید آن را ببندید.
این کار با روش close کردن فایل انجام می شود.

file = open("filename.txt", "w")
# do stuff to the file
file.close()

نکته:در آینده نحوه خواندن/نوشتن محتویات فایل را بررسی خواهیم کرد.

۱ نظر موافقین ۰ مخالفین ۰ ۰۶ تیر ۹۸ ، ۲۲:۴۴
سعید دامغانیان

assertion یا تاکید

assertion و در حقیقت به نوعی تایید اطلاعات به عنوان یک شرط بررسی صحت درزبان پایتون در نظر گرفته می شود که شما می توانید آن را در حالت on و یا off در انتهای تست برنامتون قرار بدید.
یک نمونه که در آن در صورتی که با خطایی مواجه شد یک exception raise را برای بررسی Assertion و یا تایید اطلاعات صدا خواهد زد.

print(1)
assert 2 + 2 == 4
print(2)
assert 1 + 1 == 3
print(3)

خروجی:

>>>
1
2
AssertionError
>>>

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

یک assertion می تواند یک آرگومان دوم را داشته باشد که در صورتی که ادعا ناقص باشد به AssertionError انتقال دهد.

temp = -10
assert (temp >= 0), "Colder than absolute zero!"

خروجی:

>>>
AssertionError: Colder than absolute zero!
>>>

نکته:استثناء AssertionError می تواند مانند هر استثنائی دیگر با استفاده از دستور try-except به دست آید و اگر چنین کاری انجام نشود، این نوع استثنا برنامه را خاتمه می دهد.

۱ نظر موافقین ۰ مخالفین ۰ ۰۶ تیر ۹۸ ، ۲۲:۴۳
سعید دامغانیان

raising exception

شما می توانید exception ها را با استفاده از دستور raise فرا خوانی کنید.

print(1)
raise ValueError
print(2)

خروجی:

>>>
1
ValueError
>>>

نکته:شما باید نوع استثنا یا Exception را مشخص کنید.

Exception ها را می توان با استدلال هایی مطرح کرد که جزئیات آنها را در بر می گیرد.
مثلا:

name = "123"
raise NameError("Invalid name!")

خروجی:

>>>
NameError: Invalid name!
>>>

در بلوک Except ، بیانیه Raise می تواند بدون استدلال مورد استفاده قرار گیرد تا هر استثنائی را دوباره ایجاد کند.
مثلا:

try:
   num = 5 / 0
except:
   print("An error occurred")
   raise

خروجی:

>>>
An error occurred

ZeroDivisionError: division by zero
>>>
۱ نظر موافقین ۰ مخالفین ۰ ۰۶ تیر ۹۸ ، ۲۲:۴۲
سعید دامغانیان

finally

برای اطمینان از اینکه کد اجرا می شود مهم نیست چه خطایی رخ می دهد، شما می توانید یک بیانیه finally را استفاده کنید. بیانیه finally در پایین یک بیانیه try/except قرار می گیرد. کد شامل finally همیشه بعد از اجرای کد در try و احتمالا در بلاک except ها اجرا می شود.

try:
   print("Hello")
   print(1 / 0)
except ZeroDivisionError:
   print("Divided by zero")
finally:
   print("This code will run no matter what")

خروجی:

>>>
Hello
Divided by zero
This code will run no matter what
>>>

کد finally حتی زمانی که یکی از Exception ها عمل نکند هم به کار خود ادامه خواهد داد.

try:
   print(1)
   print(10 / 0)
except ZeroDivisionError:
   print(unknown_var)
finally:
   print("This is executed last")

خروجی:

>>>
1
This is executed last

ZeroDivisionError: division by zero
During handling of the above exception, another exception occurred:
NameError: name 'unknown_var' is not defined
>>>
۰ نظر موافقین ۰ مخالفین ۰ ۰۶ تیر ۹۸ ، ۲۲:۴۰
سعید دامغانیان

در قسمت های گذشته با exception ها به طور غیر مستقیم برخورد داشته اید. این مدل زمانی اتفاق میافتد که عملکردی به خاطر ورودی اشتباه انجام شود.وقتی این حالت اتفاق میافتد همراه با اخطار برنامه کاملا متوقف می شود.

کد زیر نحوه عملکرد و خروجی یک Exception را هنگام تقسیم عددی بر صفر نشان می دهد.

num1 = 7
num2 = 0
print(num1/num2)

خروجی:

>>>
ZeroDivisionError: division by zero
>>>

استثنا و یا exception ها در موارد متعددی اتفاق میافتند.
چند مورد از متداول ترین آنها شمامل موارد زیر است:
ImportError:زمانی که درج ماژول به اشتباه صورت گیرد
IndexError: زمانی که لیستی با یک عدد نشانگر خارج از اعضا نشان داده شود
NameError: زمان استفاده از یک متغیر نا معلوم
SyntaxError: هنگام اشتباه در کد نویسی
TypeError: صدا زدن یک مقدار با نوع اشتباه در یک تابع
ValueError: صدا زدن یک مقدار درون تابع با نوع درست اما مقدار اشتباه

برای رسیدگی به استثنا ها، و هنگام فراخوانی یک exception، می توانید از دستور try/ exception استفاده کنید.
بلوک try حاوی کدیست که ممکن است exception را برانگیزد. اگر این exception اتفاق افتد، کد در بلوک try اجرا نمی شود و کد در بلوک except اجرا می شود. اگر هیچ خطایی رخ نداده باشد، کد در بلوک except اجرا نمی شود.
برای مثال:

try:
   num1 = 7
   num2 = 0
   print (num1 / num2)
   print("Done calculation")
except ZeroDivisionError:
   print("An error occurred")
   print("due to zero division")

خروجی:

>>>
An error occurred
due to zero division
>>>

نکته:در کد بالا پیغام خطا نوع exception را مشخص می کند.

Exception Handling
یک کد حاوی try می تواند چندین حالت متفاوتی داشته باشد، به جز بلوک هایی که بتواند exception های مختلف را مدیریت کند
exception چندگانه همچنین می تواند در یک تک جز به بلوک با استفاده از پرانتز قرار داده شود.

try:
   variable = 10
   print(variable + "hello")
   print(variable / 2)
except ZeroDivisionError:
   print("Divided by zero")
except (ValueError, TypeError):
   print("Error occurred")

خروجی:

>>>
Error occurred
>>>

except ها می توانند بدون هیچ ساختار مشخصی نیز استفاده شوند. این ها باید به ندرت مورد استفاده قرار گیرد، زیرا می توانند اشتباهات غیرمنتظره ای را بدست آورند و اشتباهات برنامه نویسی را پنهان کنند.
مثلا:

try:
   word = "spam"
   print(word / 0)
except:
   print("An error occurred")

خروجی:

>>>
An error occurred
>>>

نکته:استفاده از exception handeling بسیار کارآمد است به خصوص زمانی که ورودی از جانب کاربر اشتباه باشد.

۰ نظر موافقین ۰ مخالفین ۰ ۰۶ تیر ۹۸ ، ۲۲:۳۹
سعید دامغانیان

ماژول ها

سه نوع اصلی از ماژول ها در پایتون وجود دارد،آنهایی که خودتان می نویسید، آنهایی که از منابع خارجی نصب می کنید ودر آخز آنهایی که با پایتون از پیش نصب شده اند.
آخرین نوع کتابخانه استاندارد نامیده می شود و شامل بسیاری از ماژول های مفید می باشد.برخی از ماژول های مفید کتابخانه استاندارد عبارتند از:stringredatetimemathrandomosmultiprocessingsubprocess,socketemailjsondoctestunittestpdbargparse ,sys.

وظایفی که می تواند توسط کتابخانه استاندارد انجام شود عبارتند از تجزیه رشته، سریال سازی داده ها، آزمایش، اشکال زدایی و دستکاری تاریخ، ایمیل، استدلال خط فرمان و خیلی بیشتر!

نکته:کتابخانه استاندارد گسترده پایتون یکی از مهمترین نقاط قوت آن به عنوان یک زبان است.

کتابخانه های استاندارد

برخی از ماژولهای کتابخانه استاندارد در پایتون نوشته شده و برخی از آنها در C نوشته شده است.
اکثر آنها در تمام سیستم عاملها قابل دسترسی هستند، اما برخی از آنها برای ویندوز یا یونیکس خاص هستند.

نکته: ما تمام ماژول های موجود در کتابخانه استاندارد را پوشش نمی دهیم. به سادگی بیش از حد وجود دارد. مستندات کامل کتابخانه استاندارد در سایت اینترنتی www.python.org در دسترس است.

ماژول ها

خیلی از ماژول های قابل نصب که توسط دیگران نوشته شده اند را می توان در قالبی از پکیج های پایتون یافت.(Python Package Index (PYPI))
بهترین راه برای نصب این ماژول ها، استفاده از یک برنامه به نام pip است.
(برای نصب pip کافیست که فایل پیسوت شده به نام را دانلود و با دو بار کلیک بر روی آن اجرا نمایید، در اصل هدف اجرا شدن کد های نوشته شده در فایل get-pip.py هستش پس یا فایل رو باز کنید و اجرا کنید و یا در دایرکتوری فایل دانلود شده دستور python get-pip.py رو اجرا کنید تا پکیج نصب بشه. لطفا به نسخه پایتون نصب شده برای اجرای کد دقت کنید)

این به طور پیش فرض با توزیع های مدرن پایتون نصب می شود. اگر شما آن را ندارید، نصب آنلاین آسان است.هنگامی که شما آن را دارید، نصب کتابخانه ها از PyPI آسان است. به دنبال نام کتابخانه ای که می خواهید نصب کنید، به خط فرمان بروید (برای ویندوز Command Prompt) و فرمان pip install library_name را وارد کنید تا نصب شود. پس از انجام این کار، کتابخانه را وارد کنید و از آن در کد خود استفاده کنید.

استفاده از pip روش استاندارد نصب کتابخانه ها در اکثر سیستم عامل ها است، اما برخی از کتابخانه ها دارای دو نسخه ی مجتمع شده برای ویندوز هستند. این فایل های اجرایی نرمال است که به شما اجازه می دهد کتابخانه ها را با GUI نصب کنید همانطور که برنامه های دیگر را نصب می کنید.

نکته: مهم است که دستورات pip را در خط فرمان وارد کنید، نه مفسر پایتون.

۰ نظر موافقین ۰ مخالفین ۰ ۰۶ تیر ۹۸ ، ۰۵:۰۵
سعید دامغانیان

ماژول ها Modules

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

راه اصلی برای استفاده از یک ماژول، افزودن import module_name در بالای کد خود است و سپس با استفاده از module_name.var برای دسترسی به توابع و مقادیر با نام var در ماژول است.
به عنوان مثال، در مثال زیر از ماژول random برای تولید اعداد تصادفی استفاده می کند:

import random

for i in range(5):
   value = random.randint(1, 6)
   print(value)

خروجی:

>>>
2
3
6
5
4
>>>

نکته:کد از تابع randint تعریف شده در ماژول تصادفی برای چاپ 5 عدد تصادفی در محدوده 1 تا 6 استفاده می کند.

نوع دیگری از حالت import وجود دارد و برای زمانی است که شما می خواهید یک تابع خاص از ماژول را مورد استفاده قرار دهید. مدل استفاده آن به شکل from module_name import var خواهد بود که var تابع داخل ماژول را مشخص می کند.

from math import pi

print(pi)

خروجی:

>>>
3.141592653589793
>>>

همچنین می توانید از comma باری جدا سازی توابع بهره ببرید.

from math import pi, sqrt

نکته:* همه اشیا را از یک ماژول وارد می کند. به عنوان مثال:from math import *
این کار توصیه شده است، زیرا متغیرها را در کد خود با متغیرهای موجود در ماژول خارجی اشتباه می گیرد.

تلاش برای وارد کردن یک ماژول که در دسترس نیست، باعث ایجاد کردن خطا می شود.

import some_module

خروجی:

>>>
ImportError: No module named 'some_module'
>>>

شما می توانید یک ماژول یا یک شی را تحت نام دیگری با استفاده از کلمه کلیدی وارد کنید. این عمدتا زمانی مورد استفاده قرار می گیرد که یک ماژول یا یک شیء دارای نام طولانی یا گیج کننده است.
مثلا:

from math import sqrt as square_root
print(square_root(100))

خروجی:

>>>
10.0
>>>
۰ نظر موافقین ۰ مخالفین ۰ ۰۶ تیر ۹۸ ، ۰۵:۰۳
سعید دامغانیان

توابع به عنوان شئ

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

def multiply(x, y):
   return x * y

a = 4
b = 7
operation = multiply
print(operation(a, b))

خروجی:

>>>
28
>>>

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

توابع نیز می توانند بعنوان استدلال های دیگر توابع استفاده شوند.

def add(x, y):
  return x + y

def do_twice(func, x, y):
  return func(func(x, y), func(x, y))

a = 5
b = 10

print(do_twice(add, a, b))

خروجی:

>>>
30
>>>

نکته: همانطور که می بینید تابع do_twice یک تابع دیگر را به عنوان آرگومان ورودی دریافت می کند و در بدنه کد خود استفاده می کند.

۰ نظر موافقین ۰ مخالفین ۰ ۰۶ تیر ۹۸ ، ۰۵:۰۱
سعید دامغانیان

کامنت گذاری در پایتون

نظرات حاوی نکات مربوط به کد مورد استفاده برای درک بهتر آن است. آنها بر نحوه اجرا کد تاثیر نمی گذارد.

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

x = 365
y = 7
# this is a comment

print(x % y) # find the remainder
# print (x // y)
# another comment

خروجی:

>>>
1
>>>

نکته:پایتون نظر چند منظوره عمومی ندارد، همانطور که زبان های برنامه نویسی مانند C.

Docstrings (رشته های مستند سازی) هدف مشترکی را در ایجاد نظرات ارائه می دهند، زیرا آنها برای توضیح کد طراحی شده اند.
به عنوان مثال:

def shout(word):
  """
  Print a word with an
  exclamation mark following it.
  """
  print(word + "!")
    
shout("spam")

خروجی:

>>>
spam!
>>>

نکته:بر خلاف نظرات متعارف، دایرکتوری ها در طول زمان اجرای برنامه حفظ می شوند. این موضوع به برنامه نویس برای بازبینی این نظرات در زمان اجرا کمک شایانی خواهد کرد.

۰ نظر موافقین ۰ مخالفین ۰ ۰۶ تیر ۹۸ ، ۰۴:۵۹
سعید دامغانیان