عبداله کشتکار
عبداله کشتکار
خواندن ۳ دقیقه·۴ سال پیش

پایتون و داینامیک تایپ بودن: annotationها

همه ما میدانیم که پایتون یک زبان dynamic typeه یعنی متغیرهاش درهنگام runtime تایپشون مشخص میشه و راحت عوض میشه.

احتمالا اگه شما هم پایتون نوشته باشین احتمالا تایپ های بعضی متغییر ها با هم قاطی کردین٬ شایدم اشتباهی به یک متغیر جا رشته٬ عدد دادین.

مشکلی نیست٬ در سال 2006 دوتا برنامه نویس اومدن برای پایتون سینتکس جدید اضافه کردن٬ این سینتکس به این صورته که میشه برای متغییر یک راهنما نوشت٬ حتی برای تابع و مقداری که برمیگرداند.

خب بیخیال حرف‌های اضاف

نکات مهم:

اگه از VSCode استفاده میکنید حتما افزونه pyright رو نصب کنید تا اگه برخلاف قوانین (بعدن منظورم میفهمین) عمل کردین٬ ادیتوره ارور نشون بده.

لازم به ذکر است اگه برخلاف راهنماهایی که نوشتید عمل کردید٬ هیچ مشکلی توی اجرای برنامه نخواهد بود و این بیشتر یک راهنما هست٬ درکل قرار نیست پایتون استاتیک بشه.

خب بریم مثال بزنیم که این درواقع به چه دردمون میخوره

ساده ترین مثال٬ فرض کنین میخواهین تابع جمع کردن دوتا عدد بنویسین

def add(first, second): return first + second print(add(10, 5)) # 15 print(add(&quotHello&quot, &quotWorld&quot)) # HelloWorld

معلومه که تابع بالا دوتا ورودی میگیره و با هم جمع میکنه٬ ولی یه نکته اینجاست٬ ما برای جمع کردن دوتا عدد استفاده کردیم درحالی که میشه دوتا رشته داد و پایتون مشکلی نخواهد داشت.

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

def add(first: int, second: int): return first + second # این خط مشکلی نخواهد داشت print(add(10, 5)) # 15 # ولی در اینجا ادیتور یک زیرخط قرمز میکشد که شما جای عدد٬ رشته دادین print(add(&quotHello&quot, &quotWorld&quot)) # HelloWorld

حالا بریم یک مورد کاربردی‌تر

فرض کنید یک تابع فیبوناچی میخواهید بنویسید

خب ما توقع داریم یک ورودی عدد بگیریم و یک عدد هم برگردونیم.

در کد زیر یه ایرادی هست٬ گفتیم که یک عدد برمیگردونیم ولی pass نوشتیم یعنی قرار نیست چیزی برگردونده شود٬ پس یک خط قرمز زیر int کشیده میشه

def fib(num: int) -> int: pass

حالا به کد زیر نگاه کنید

# wrong def fib(num: int) -> int: if num < 1: return 1

در کد بالا ما عدد برگردوندیم ولی باز ایراد میگیره چون باز اگه شرط اجرا نشه همچنان چیزی برگردونده نمیشود.

حتما در نوشتن این راهنما ها نکات زیر رو رعایت کنین تا خوانایی کدتون بهتر بشه

# correct my_var: int name: str = &quotHello World&quot value: int = 10 # wrong my_cool_name : int # حتما قبل دونقطه فاصله نزارین my_cool_name_2:int # بعد دو نقطه فاصله بزارین

اینم یه سری مثال های اضاف

def func(a: int = 10, b: str) -> str: pass def sum_items(items: list) -> int: return sum(items)

امیدوارم مفید باشه٬ این اولین نوشته ام هست پس ممکن است توضیحاتم خوب نباشن پس لطفا به بزرگواری خودتون ببخشین D:

احتمالا قسمت دوم بنویسم یا بریم سایر موارد cool پایتون کار کنیم

اگه پیشنهادی یا انتقادی هست حتما بگین.

پایتونبرنامه نویسیپایتون پیشرفته
مهندس نرم‌افزار | عاشق پایتون و ری‌اکت | https://akeshtkar.com/
شاید از این پست‌ها خوشتان بیاید