DJANGOLEARN_IR Telegram 1047
Forwarded from Python BackendHub
داشتم ویدیو مصاحبه عثمان رو میدیدم با امیربهادر که شاخکام تکون خورد بیشتر راجب yield تحقیق کنم.

سوال) کاربرد yield چیه تو پایتون؟
جواب: یک جنریتور فانکشن که memory efficient هست و مثلا از دیسک میخواین ۱۰۰ گیگ فایل بخونید نیاز نیست کلشو یک دفعه لود کنید تو مموری و میتونید ۱۰۰ مگ ۱۰۰ مگ لود کنید تو مموری

مقاله اول) yield چطور تو سطح پایتون کار میکنه؟ (نسبتا ساده, اسکیپ کنید اگه بلدین)
همونطور که گفتم yield یک جنریتور فانکشن هست. ولی یعنی چی؟
یعنی وقتی کلمه yield رو میذارین و اون تابع رو ران میکنید به جای اینکه یک آبجکت بهتون ریترن کنه بهتون یک جنریتور ریترن میکنه.

هردفعه که next() رو بزنید یک بار اجرا میشه و تا yield بعدی میره.اگه yield دیگه ای نباشه دیگه چیزی ران نمیکنه و ارور StopIteration میده.
یک نکته کلیدی. پس وقتی میخوایم کلین آپ کنیم همینطوری next(my_generator) رو صدا میزنیم تا به اخرین خط کد برسه و ارور بده. درواقع تو asyncio pytest همین اتفاق میفته. ما یک آبجکت رو yield میکنیم. خود asyncio-pytest پلاگین میاد next() میزنه روش و آبجکتو میگیره. بعد به کل تستا پاس میده همون آبجکتو. بعدش هم یک دور دیگه next() رو میزنه و میدونه ما بعد yield اول کلین آپ کردیم. اون موقع کلین آپ تست ما هم ران میشه که خیلی قشنگ تر unittest پایتون هست.



def my_gen():
yield 1
print("Clean up here")

generator = my_gen()
next(generator) -> 1
next(generator) -> prints clean up here -> raise StopIteration


خب تا اینجا فهمیدیم تو سطح پایتون چطوری کار میکنه generator و yield.
حالا میریم یک لایه پایین تر تو سطح interpreter 😈

@ManiFoldsPython
👍202👎1🔥1



tgoop.com/djangolearn_ir/1047
Create:
Last Update:

داشتم ویدیو مصاحبه عثمان رو میدیدم با امیربهادر که شاخکام تکون خورد بیشتر راجب yield تحقیق کنم.

سوال) کاربرد yield چیه تو پایتون؟
جواب: یک جنریتور فانکشن که memory efficient هست و مثلا از دیسک میخواین ۱۰۰ گیگ فایل بخونید نیاز نیست کلشو یک دفعه لود کنید تو مموری و میتونید ۱۰۰ مگ ۱۰۰ مگ لود کنید تو مموری

مقاله اول) yield چطور تو سطح پایتون کار میکنه؟ (نسبتا ساده, اسکیپ کنید اگه بلدین)
همونطور که گفتم yield یک جنریتور فانکشن هست. ولی یعنی چی؟
یعنی وقتی کلمه yield رو میذارین و اون تابع رو ران میکنید به جای اینکه یک آبجکت بهتون ریترن کنه بهتون یک جنریتور ریترن میکنه.

هردفعه که next() رو بزنید یک بار اجرا میشه و تا yield بعدی میره.اگه yield دیگه ای نباشه دیگه چیزی ران نمیکنه و ارور StopIteration میده.
یک نکته کلیدی. پس وقتی میخوایم کلین آپ کنیم همینطوری next(my_generator) رو صدا میزنیم تا به اخرین خط کد برسه و ارور بده. درواقع تو asyncio pytest همین اتفاق میفته. ما یک آبجکت رو yield میکنیم. خود asyncio-pytest پلاگین میاد next() میزنه روش و آبجکتو میگیره. بعد به کل تستا پاس میده همون آبجکتو. بعدش هم یک دور دیگه next() رو میزنه و میدونه ما بعد yield اول کلین آپ کردیم. اون موقع کلین آپ تست ما هم ران میشه که خیلی قشنگ تر unittest پایتون هست.



def my_gen():
yield 1
print("Clean up here")

generator = my_gen()
next(generator) -> 1
next(generator) -> prints clean up here -> raise StopIteration


خب تا اینجا فهمیدیم تو سطح پایتون چطوری کار میکنه generator و yield.
حالا میریم یک لایه پایین تر تو سطح interpreter 😈

@ManiFoldsPython

BY جنگولرن


Share with your friend now:
tgoop.com/djangolearn_ir/1047

View MORE
Open in Telegram


Telegram News

Date: |

According to media reports, the privacy watchdog was considering “blacklisting” some online platforms that have repeatedly posted doxxing information, with sources saying most messages were shared on Telegram. There have been several contributions to the group with members posting voice notes of screaming, yelling, groaning, and wailing in different rhythms and pitches. Calling out the “degenerate” community or the crypto obsessives that engage in high-risk trading, Co-founder of NFT renting protocol Rentable World emiliano.eth shared this group on his Twitter. He wrote: “hey degen, are you stressed? Just let it out all out. Voice only tg channel for screaming”. How to create a business channel on Telegram? (Tutorial) A new window will come up. Enter your channel name and bio. (See the character limits above.) Click “Create.” As the broader market downturn continues, yelling online has become the crypto trader’s latest coping mechanism after the rise of Goblintown Ethereum NFTs at the end of May and beginning of June, where holders made incoherent groaning sounds and role-played as urine-loving goblin creatures in late-night Twitter Spaces.
from us


Telegram جنگولرن
FROM American