You are currently viewing اپراتور Walrus در پایتون

زبون پایتون بخاطر سینتکس(syntax) ساده و نزدیک به زبون انگلیسی که داره همه رو جذب خودش می‌کنه چون می‌تونیم با چند خط کد ساده کارای باحال و خفنی انجام بدیم و این خیلی حس خوبی میده 😀

می‌خوام یکی از ویژگی های خیلی خوبی که تو پایتون 3.8 اضافه شده رو بهتون بگم تا با این اپراتور خیلی خوب و کاربردی آشنا بشین. اپراتور walrus که به صورت =: نوشته میشه، می‌تونه تعداد خط کدهای مارو کمتر کنه. این ویژگی خیلی خیلی خوبه و برنامه نویسای پایتون همیشه دوست دارن تو تعداد خط کد کمتر کارای بیشتری انجام بدن چون خیلی حال میده 😎 بعلاوه باعث میشه سرعت کد نویسی و توسعه برناممون سریعتر بشه چون تو زمان کمتر و با کد کمتر، داریم کارهای بیشتری انجام میدیم و این یعنی راحتی، که چیزیه که دنبالش هستیم تا همیشه ساده‌تر کد بزنیم و بیشتر لذت ببریم و برنامه های باحال‌تر و با ارزش‌تری درست کنیم.

دلیل اینکه اسمشو گذاشتن walrus (تلفظ: والرِس) شباهت ظاهری این اپراتور به گراز دریایی 😁

کار با این اپراتور خیلی خیلی سادست و به راحتی می‌تونین یاد بگیرینش. حالا می‌خوایم با چندتا مثال ساده کامل درکش کنیم و از این به بعد تو برنامه هامون ازش استفاده کنیم.

مثلا این کد رو درنظر بگیرین:

name = 'rezaaaaaaaaaaaaa'
n = len(name)

if n > 10:
    print(f"Name is too long. {n} characters expected <= 10")

تو کد بالا ما تو مرحله اول، طول اسم رو بدست آوردیم و داخل n ذخیره کردیم چون بعدش می‌خوایم هم تو if هم تو print ازش استفاده کنیم و نیاز نداشته باشیم 2 بار طول اسم رو محاسبه کنیم. بعد تو مرحله دوم داخل if چک کردیم بیشتر از 10 هست یا نه.

حالا اگه از اپراتور walrus استفاده کنیم کدمون اینطوری میشه:

name = 'rezaaaaaaaaaaaaa'

if (n := len(name)) > 10:
    print(f"Name is too long. {n} characters expected <= 10")

اینجا اون دو مرحله قبل رو توی یک خط انجام میدیم. اومدیم تو شرط if هم طول اسم رو حساب کردیم هم داخل متغیر n ذخیرش کردیم هم چک کردیم بیشتر از 10 هست یا نه؟ یعنی 3 کار مختلف رو توی یک خط انجام دادیم 😀

حالا یه مثال دیگه:

line = f.readline()
while line:
    # process line
    line = f.readline()

اینجاهم 3 مرحله داریم. مرحله اول شروع می‌کنیم یک خط از فایل رو می‌خونیم و تو متغیر line ذخیره می‌کنیم. مرحله دوم چک می‌کنیم اطلاعاتی وجود داره یا به آخر فایل رسیدیم؟ اگر هنوز فایلمون اطلاعاتی داشت، اطلاعات رو می‌خونیم و پروسس می‌کنیم. مرحله سوم خط بعدی فایل رو می‌خونیم و مرحله دوم تکرار میشه…

while line := f.readline():
    # process line

حالا اومدیم از اپراتور walrus استفاده کردیم و همه اون کارهارو توی یک خط انجام دادیم 😀 یعنی هم خط اول فایل رو خوندیم، هم داخل متغیر line ذخیره کردیم، هم چک کردیم اطلاعاتی وجود داره؟ و هم خط بعدی رو خوندیم و این روند رو تا وقتی به انتهای فایل برسیم ادامه دادیم

پس walrus به این صورت می‌تونه کار رو خیلی خیلی برامون راحت تر کنه و تو تعداد خط کد کمتر، کار مدنظر مارو انجام بده و ماهم با راحتی و لذت بیشتر کد بزنیم.

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