python courses
Photo
ولی داستان چیه که #پایتون میتونه به صورت دینامیک اتریبیوت اضافه کنه؟
جوابش به همون dict مربوط میشه ولی بیاین مرحله به مرحله چک کنیم ببینیم چه اتفاقی میافته
👇
جوابش به همون dict مربوط میشه ولی بیاین مرحله به مرحله چک کنیم ببینیم چه اتفاقی میافته
👇
python courses
ولی داستان چیه که #پایتون میتونه به صورت دینامیک اتریبیوت اضافه کنه؟ جوابش به همون dict مربوط میشه ولی بیاین مرحله به مرحله چک کنیم ببینیم چه اتفاقی میافته 👇
۱. مثلا آبجکت whatever را فرض کنید که dict هم داره.
۲. حالا ما از whatever می پرسیم whatever.folan مقدارش چیه
۳. در واقع ما با نوشتن whatever.folan داریم متد getattr از whatever را صدا میزنیم و folan تبدیل میشه به رشته "folan" اینجوری:
whatever.__getattr__("folan")
۴. بعد getattrمیره سراغ dict خودش ببینه کلید "folan"تعریف شده یا نه. یعنی این شکلی:
self.__dict__["folan"]
۵. مقدارش رو ریترن میکنه.
۲. حالا ما از whatever می پرسیم whatever.folan مقدارش چیه
۳. در واقع ما با نوشتن whatever.folan داریم متد getattr از whatever را صدا میزنیم و folan تبدیل میشه به رشته "folan" اینجوری:
whatever.__getattr__("folan")
۴. بعد getattrمیره سراغ dict خودش ببینه کلید "folan"تعریف شده یا نه. یعنی این شکلی:
self.__dict__["folan"]
۵. مقدارش رو ریترن میکنه.
python courses
۱. مثلا آبجکت whatever را فرض کنید که dict هم داره. ۲. حالا ما از whatever می پرسیم whatever.folan مقدارش چیه ۳. در واقع ما با نوشتن whatever.folan داریم متد getattr از whatever را صدا میزنیم و folan تبدیل میشه به رشته "folan" اینجوری: whatever.__getattr__("folan")…
موقع ست کردن هم اینجوری میشه:
۱. مقدار ست میشه
whatever.folan = "ye chizi"
۲. متد setattr صدا زده میشه ولی یه آرگومان بیشتر داره چون باید مقدار value را هم بگیره. منظور از value هر چیزیه که سمت راست علامت مساوی نوشتیم.
whatever.__setattr__("folan", "ye chizi")
۳. بعدش هم که کلید دیکشنری اگه وجود نداشته باشه اضافه میشه و اگه وجود داشت، مقدارش (value) آپدیت میشه
self.__dict__["folan"] = "ye chizi"
۱. مقدار ست میشه
whatever.folan = "ye chizi"
۲. متد setattr صدا زده میشه ولی یه آرگومان بیشتر داره چون باید مقدار value را هم بگیره. منظور از value هر چیزیه که سمت راست علامت مساوی نوشتیم.
whatever.__setattr__("folan", "ye chizi")
۳. بعدش هم که کلید دیکشنری اگه وجود نداشته باشه اضافه میشه و اگه وجود داشت، مقدارش (value) آپدیت میشه
self.__dict__["folan"] = "ye chizi"
بهتره توی کدهای پایتون، به تایپها هم توجه کنیم
حالا یه سوال:
اگر بخواهیم type hint را برای تابع lambda به کار ببریم، روش پیاده سازی چطور خواهد بود؟
با توجه به اینکه علامت کالن «:» در تعریف lambda معنای خاصی داره و نمیتونیم مثل def برای تعریف تایپ ازش استفاده کنیم.
جواب: 👇
حالا یه سوال:
اگر بخواهیم type hint را برای تابع lambda به کار ببریم، روش پیاده سازی چطور خواهد بود؟
با توجه به اینکه علامت کالن «:» در تعریف lambda معنای خاصی داره و نمیتونیم مثل def برای تعریف تایپ ازش استفاده کنیم.
جواب: 👇
تصویر پایین، تعریف یک تابع در زبان #پایتون رو نشون میده.
ولی داستان اون آرگومانهای عجیب و غریب اسلش «/» یا ستاره «*» چیه؟
ولی داستان اون آرگومانهای عجیب و غریب اسلش «/» یا ستاره «*» چیه؟
اگه از #پایتون ورژن 3.8 و یا بالاتر استفاده میکنید، میتونید تابعها را این جوری هم تعریف کنید
هر چیزی قبل اسلش «/» بیاد، positional argument شناخته میشه. یعنی نمیتونم موقع callکردن تابع از آرگومانهای کمتری استفاده کنم. و از طرفی، اجازه هم ندارم از keyword استفاده کنم
هر چیزی قبل اسلش «/» بیاد، positional argument شناخته میشه. یعنی نمیتونم موقع callکردن تابع از آرگومانهای کمتری استفاده کنم. و از طرفی، اجازه هم ندارم از keyword استفاده کنم
بعد «/» هر چی بنویسیم، میتونه هم positional استفاده بشه هم با اسم یا کلید واژه (به صورت keyword). کاملا اختیاری هست.
ولی این حالت اختیاری بودنش تا زمانی ادامه پیدا میکنه که برسیم به آرگومان «*» از اون جا به بعد داستان فرق میکنه و «باید» از آرگومان keyword استفاده کنیم
ولی این حالت اختیاری بودنش تا زمانی ادامه پیدا میکنه که برسیم به آرگومان «*» از اون جا به بعد داستان فرق میکنه و «باید» از آرگومان keyword استفاده کنیم
آخرش هم میتونیم با ** باقی keyword arguemnt ها را داخل یک دیکشنری دریافت کنیم.
در زبان #پایتون برای خوانایی بیشتر میتونیم اعداد را به این شکل هم تعریف کنیم.
For you Python users who have been unwilling (or unable) to upgrade to version 3, there’s yet another reason to get motivated: python.org has released Python 2.7.18, the absolute last official release for Python 2.
با دستور os.system از کتابخانه os پایتون میتوانیم دستورهایی که در محیط کامندلاین اجرا میکنیم را به شکل یک string و به عنوان آرگومان ورودی این تابع در نظربگیریم.
چند مثال برای لینوکس و ویندوز را ببینیم.
چند مثال برای لینوکس و ویندوز را ببینیم.