در درس سوم از آموزش رایگان پایتون برخی از مهمترین کلیدواژه های پایتون را با هم بررسی کردیم، در این درس می خواهیم ادامه این کلمات کلیدی پایتون را با هم یاد بگیریم.
کلیدواژههای ساختاری در پایتون: def، class، with، as، pass، lambda
در پایتون def
کلیدواژه def برای تعریف توابع توسط کاربر استفاده میشود.
کد زیر تابعی به نام fun را با استفاده از کلیدواژه def تعریف میکند. زمانی که تابع با استفاده از ()fun فراخوانی میشود، “Inside Function” در خروجی چاپ میشود. این کد استفاده از کلیدواژه def را برای تعریف و فراخوانی یک تابع در پایتون نشان میدهد.
استفاده از کلید واژه def در پایتون
def fun(): print("Inside Function") fun()
خروجی:
Inside Function
class در پایتون
کلیدواژه class برای اعلام کلاسهای تعریف شده توسط کاربر به کار میرود.
استفاده از کلیدواژه Class در پایتون
کد زیر یک کلاس پایتون به نام Dog را با دو ویژگی کلاسی، attr1 و attr2، و یک متد به نام fun که این ویژگیها را چاپ میکند، تعریف میکند.
در ابتدا یک شیء به نام Rodger از کلاس Dog ایجاد میشود، این شی به ویژگیهای کلاس دسترسی پیدا میکند، و متد را فراخوانی میکند. و در نهایت هنگام اجرا، مقادیر attr1 و attr2 را چاپ میکند و متد این مقادیر را نمایش میدهد که منجر به خروجی نشان داده شده میشود.
class Dog: attr1 = "mammal" attr2 = "dog" def fun(self): print("I'm a", self.attr1) print("I'm a", self.attr2) Rodger = Dog() print(Rodger.attr1) Rodger.fun()
خروجی:
mammal I'm a mammal I'm a dog
With در پایتون
کلیدواژه with برای بستهبندی اجرای یک بلوک کد درون متدهای تعریف شده توسط مدیریت کنتکست (context manager) استفاده میشود. این کلیدواژه در برنامهنویسی روزمره زیاد استفاده نمیشود.
استفاده از کلیدواژه With در پایتون
این کد نشان میدهد چگونه از دستور with برای باز کردن یک فایل به نام ‘file_name‘ در حالت نوشتن (‘w‘) استفاده میشود. این کد متن ‘ !hello world‘ را داخل فایل مینویسد و به طور خودکار باز و بسته شدن فایل را مدیریت میکند. دستور with برای مدیریت بهتر منابع استفاده میشود و اطمینان حاصل میکند که فایل پس از اجرای بلوک به درستی بسته شود.
# using with statement with open('file_name', 'w') as file: file.write('hello world !')
as در پایتون
یکی از کاربردهای کلیدواژه as ایجاد یک نام مستعار برای ماژول وارد شده به برنامه است. یعنی به ماژول وارد شده یک نام جدید داده میشود. به عنوان مثال، import math as mymath.
استفاده از کلیدواژه as در پایتون
این کد از ماژول ریاضی پایتون استفاده میکند که با نام مستعار gfg وارد برنامه میشود. این کد فاکتوریل 5 را محاسبه و چاپ میکند. تابع ()math.factorial برای محاسبه فاکتوریل یک عدد به کار میرود و در این مورد، فاکتوریل 5 را که برابر با 120 است، محاسبه میکند.
import math as gfg print(gfg.factorial(5))
خروجی:
120
pass در پایتون
pass یک دستور خالی در پایتون است. هنگامی مواجهه با این دستور هیچ اتفاقی نمیافتد. این دستور برای جلوگیری از خطاهای فاصلهبندی و به عنوان یک جایگزین موقت استفاده میشود.
استفاده از کلیدواژه Pass در پایتون
کد زیر شامل یک حلقه for است که باید 10 بار تکرار شود اما به علت وجود دستور موقت ‘pass‘، هیچ اقدام خاصی درون حلقه انجام نمیگیرد. بنابراین چیزی در خروجی چاپ نمیشود.
n = 10 for i in range(n): # pass can be used as placeholder # when code is to added later pass
Lambda در پایتون
کلیدواژه Lambda برای ایجاد توابع خطی بدون دستورات داخلی و با بازگشت مستقیم استفاده میشود.
کلیدواژه Lambda در پایتون
کد زیر یک تابع Lambda به نام g را تعریف میکند که یک آرگومان x میگیرد و x به توان سه را برمیگرداند. سپس این تابع Lambda با آرگومان 7 فراخوانی میشود و نتیجه چاپ میگردد. در این مورد، مکعب 7 که برابر با 343 است، محاسبه و چاپ میشود.
# Lambda keyword g = lambda x: x*x*x print(g(7))
خروجی:
343
کلیدواژههای بازگشتی در پایتون – Return، Yield
return
این کلیدواژه برای بازگشت از تابع استفاده میشود.
yield
این کلیدواژه مانند دستور return استفاده میشود اما برای بازگرداندن یک جنراتور به کار میرود.
استفاده از کلیدواژههای Return و Yield در پایتون
کلیدواژه ‘return‘ برای بازگرداندن نتیجه نهایی از یک تابع استفاده میشود و با استفاده از آن، اجرای کد بلافاصله از تابع خارج میشود.
در مقابل، کلیدواژه ‘yield‘ برای ایجاد یک جنراتور به کار میرود و به تابع اجازه میدهد تا چندین مقدار را بدون خروج از تابع بازگرداند. هنگام استفاده از ‘return‘، یک مقدار واحد برگردانده میشود و تابع پایان مییابد، در حالی که ‘yield‘ چندین مقدار را یکی پس از دیگری برمیگرداند و حالت تابع را حفظ میکند.
# Return keyword def fun(): S = 0 for i in range(10): S += i return S print(fun()) # Yield Keyword def fun(): S = 0 for i in range(10): S += i yield S for i in fun(): print(i)
خروجی:
45
0
1
3
6
10
15
21
28
36
45
در پایتون Import, from کلید واژههای
import
این دستور برای وارد کردن یک ماژول خاص به برنامه جاری استفاده میشود.
from
معمولاً همراه با import استفاده میشود، from برای وارد کردن عملکردها و یابخشهایی خاص از ماژول وارد شده به برنامه کار میرود.
استفاده از کلیدواژههای Import و From در پایتون
کلیدواژه ‘import‘ برای وارد کردن ماژولها یا توابع/کلاسهای خاص از ماژولها به کار میرود و آنها را در کد شما قابل دسترس میکند.
کلیدواژه ‘from‘ همراه با ‘import‘ برای مشخص کردن توابع یا کلاسهای خاصی که میخواهید از یک ماژول وارد کنید، استفاده میشود. در این مثال، در هر دو روش تابع ‘factorial‘ از ماژول ‘math‘ وارد برنامه میشود، که امکان استفاده مستقیم از آن را در کد برای شما فراهم میکند.
# import keyword from math import factorial import math print(math.factorial(10)) # from keyword print(factorial(10))
خروجی:
3628800 3628800
کلیدواژههای مدیریت استثنا در پایتون –try، except، raise، finally، و assert
try
این کلیدواژه برای مدیریت استثناها به کار میرود، و برای گرفتن خطاها در کد با استفاده از کلیدواژه except استفاده میشود. کد در بلوک “try” بررسی میشود، اگر هر نوع خطایی در برنامه وجود داشته باشد، بلوک except اجرا میشود.
except
همانطور که بالاتر توضیح داده شد، این دستور همراه با “try” برای گرفتن استثناها کار میکند.
finally
صرف نظر از نتیجه بلوک “try“، بلوک “finally” همیشه اجرا میشود.
raise
ما میتوانیم به طور صریح با کلیدواژه raise یک استثنا ایجاد کنیم.
assert
این تابع برای اهداف اشکالزدایی استفاده میشود. و معمولاً برای بررسی صحت کد به کار برده میشود. اگر یک بیانیه درست (true) ارزیابی شود، هیچ اتفاقی نمیافتد، اما وقتی که غلط (false) باشد، “AssertionError” ایجاد میشود. میتوان همراه با خطا یک پیام نیز چاپ کرد، که پیام مورد نظر با کاما از بدنه دستور جدا می شود.
استفاده از کلیدواژههای try، except، raise، finally، و assert در پایتون
مثال 1: کد ارائه شده در زیر، استفاده از چندین کلیدواژه در پایتون را نشان میدهد:
1. try و except: برای مدیریت استثناها، به ویژه ZeroDivisionError، استفاده میشود و اگر این خطا رخ دهد یک پیام خطا چاپ میکند.
2. finally: این بلوک همیشه اجرا میشود و پیام “This is always executed” را چاپ میکند، صرف نظر از اینکه آیا استثنا رخ داده است یا نه.
3. assert: یک شرط را بررسی میکند، و اگر False باشد، یک AssertionError با پیام “Divide by 0 error” ایجاد میکند.
4. raise: اگر شرط مورد نظر برقرار نشود یک استثنای سفارشی (TypeError) با یک پیام خطای مشخص ایجاد میکند.
a = 4
b = 0
try:
k = a//b
print(k)
except ZeroDivisionError:
print("Can't divide by zero")
finally:
print('This is always executed')
print("The value of a / b is : ")
assert b != 0, "Divide by 0 error"
print(a / b)
خروجی:
Can't divide by zero
This is always executed
:The value of a / b is
AssertionError: Divide by 0 error
مثال 2: این کد از کلیدواژه raise برای ایجاد یک استثنای سفارشی TypeError استفاده میکند، در این کد اگر دو رشته با هم برابر نباشند این خطا ایجاد میشود.
temp = "geeks for geeks" if temp != "geeks": raise TypeError("Both the strings are different.")
خروجی:
TypeError: Both the strings are different.
del در پایتون
del برای حذف ارجاع به یک شیء استفاده میشود. هر متغیر یا مقدار لیستی میتواند با استفاده از del حذف شود.
استفاده از کلیدواژه del در پایتون
در این کد، متغیرهای my_variable1 و my_variable2 ابتدا تعریف میشوند و سپس با استفاده از کلیدواژه del حذف میشوند. وقتی سعی کنید پس از حذف آنها را چاپ کنید، با یک NameError مواجه خواهید شد زیرا دیگر این متغیرها وجود ندارند.
my_variable1 = 20 my_variable2 = "datayad" print(my_variable1) print(my_variable2) del my_variable1 del my_variable2 print(my_variable1) print(my_variable2)
خروجی:
20
datayad
NameError: name 'my_variable1' is not defined
کلیدواژه های Global و Nonlocal در پایتون
global
این کلمه کلیدی برای تعریف یک متغیر درون تابع به عنوان یک متغیر با دامنه سراسری (global) استفاده میشود.
non-local
این کلمه کلیدی مشابه با global عمل میکند، اما برخلاف global، این کلمه کلیدی در زمان استفاده از توابع تو در تو، به یک متغیر خارج از تابع تو در توی مورد استفاده، اشاره می کند.
استفاده از کلمههای کلیدی Global و Nonlocal در پایتون
در این کد، کلمه کلیدی ‘global‘ برای تعریف متغیرهای سراسری ‘a‘ و ‘b‘ استفاده شده است. سپس یک تابع به نام ‘add‘ وجود دارد که این متغیرهای سراسری را جمع میکند و نتیجه را چاپ میکند.
بخش دوم کد نحوه استفاده از کلمه کلیدی ‘nonlocal‘ را نشان میدهد. تابع fun شامل متغیر var1 است و در داخل تابع تو در تو gun از nonlocal استفاده میشود تا نشان دهد میخواهیم متغیر var1 که در تابع محیطی خارجی fun تعریف شده است را تغییر دهیم. این مقدار متغیر var1 را افزایش داده و چاپ میکند.
a = 15 b = 10 def add(): c = a + b print(c) add() def fun(): var1 = 10 def gun(): nonlocal var1 var1 = var1 + 10 print(var1) gun() fun()
خروجی:
25 20