Python 101 – An Intro to Jupyter Notebook
https://www.blog.pythonlibrary.org/2021/09/19/python-101-an-intro-to-jupyter-notebook/
@raspberry_python
https://www.blog.pythonlibrary.org/2021/09/19/python-101-an-intro-to-jupyter-notebook/
@raspberry_python
Join this 90 mins free workshop to learn Python & also Create a Google assistance App. With certificate & Mentorship🧠💻
Enroll here👇
https://www.techlearn.live/course/build-your-first-python-project-personal-chat-assistance?aref=CP-CODEHUB.PY-D0A2B
@raspberry_python
Enroll here👇
https://www.techlearn.live/course/build-your-first-python-project-personal-chat-assistance?aref=CP-CODEHUB.PY-D0A2B
@raspberry_python
JOIN THIS FREE PYTHON WEBINAR🔥
DON'T MISS THIS GOLDEN OPPORTUNITY. 🥳
Get Certification too😁
Enrolled here👇
https://bit.ly/forskwebinar25b
DON'T MISS THIS GOLDEN OPPORTUNITY. 🥳
Get Certification too😁
Enrolled here👇
https://bit.ly/forskwebinar25b
لیستی از ارزشمند ترین چنل های تلگرام که عضویت در انها #محدود هست تا امشب فقط👆🏻💸
Difference between yield and return in Python
https://www.pythonforbeginners.com/basics/difference-between-yield-and-return-in-python
@raspberry_python
https://www.pythonforbeginners.com/basics/difference-between-yield-and-return-in-python
@raspberry_python
🐍 Python & Raspberry 🐍
Difference between yield and return in Python https://www.pythonforbeginners.com/basics/difference-between-yield-and-return-in-python @raspberry_python
سوالی ک پیش میاد در چ مواقعی دوست داریم ک از این قابلیت استفاده کنیم تو برنامه هامون؟
برای جواب دادن ب این سوال اول باید به یک تفاوت اساسی بین yield و return اشاره کنم
و تفاوتش تو اینه که وقتی از return استفاده میکنیم همه دیتاها داخل رم لود میشن و همشون باهم برگشت داده میشن و خب مشکلی که این کار داره اینه ک ممکنه حجم این دیتاها خیلی زیاد باشه و ما اصلا لازم نداریم همه اون دیتارو کنار هم داشته باشیم
مثلا شاید ی تیکه رو داشته باشیم میتونیم پردازش مربوط به اون تیکه از دیتارو ب صورت مستقل انجام بدیم و بعد بریم سراغ قسمت بعدی
خب اگه
yield
رو بلد نباشیم برای حل این مشکل حتما از استفاده از تابع صرف نظر میکنیم
ولی خب با استفاده از yield همزمان میتونیم هم از تابع استفاده کنیم و هم این مشکل حافظه رو برطرف کنیم
@raspberry_python
برای جواب دادن ب این سوال اول باید به یک تفاوت اساسی بین yield و return اشاره کنم
و تفاوتش تو اینه که وقتی از return استفاده میکنیم همه دیتاها داخل رم لود میشن و همشون باهم برگشت داده میشن و خب مشکلی که این کار داره اینه ک ممکنه حجم این دیتاها خیلی زیاد باشه و ما اصلا لازم نداریم همه اون دیتارو کنار هم داشته باشیم
مثلا شاید ی تیکه رو داشته باشیم میتونیم پردازش مربوط به اون تیکه از دیتارو ب صورت مستقل انجام بدیم و بعد بریم سراغ قسمت بعدی
خب اگه
yield
رو بلد نباشیم برای حل این مشکل حتما از استفاده از تابع صرف نظر میکنیم
ولی خب با استفاده از yield همزمان میتونیم هم از تابع استفاده کنیم و هم این مشکل حافظه رو برطرف کنیم
@raspberry_python
هیچوقت نباید اسم ماژولی که داریم داخلش کد میزنیم رو اسم یکی از ماژول/پکیج های خود پایتون یا ماژول/پکیج هایی که نصب کردیمشون تا استفاده کنیم قرار بدیم... بریم بیشتر راجع بهش حرف بزنیم...
مثال: من قرار هست با تاریخ کمی کار کنم و خب ماژول datetime رو که پایتون توی استاندارد لایبرری گذاشته رو import میکنم. ولی اسم فایل یا ماژولی که دارم کد میزنم داخلش رو میذارم datetime.py !
AttributeError: partially initialized module 'datetime' has no attribute 'date' (most likely due to a circular import)
این ارور تا حدی خوبه یه چیزایی داره بهمون راجع partially initialized شدن و همچنین circular import میگه...
سناریوی بد موقعی هست که اسم فایلی که دارم توش کد میزنم datetime نیست ولی کنار فایلم توی "همون پوشه" یه فایل به اسم datetime.py به اشتباه درست کردم و خالی هست... حالا چی :
AttributeError: module 'datetime' has no attribute 'date'
این جا دیگه نه تنها کمک نمیکنه بلکه باعث میشه اول فکر کنیم که خب آها حتما این ماژول قبلا attribute عه date رو داشته الان حذف کردن برم ببینم معادلش چیه! یا اگه مثلا datetime ماژولی بوده باشه که نصب کرده بودیم، حتما ما ورژن دیگه ای ازشو نصب کردیم... ما که عین کدی که مثلا توی ویدیو آموزشی هست رو داریم میزنیم چرا میگه date رو نداره ؟؟
ماجرا از این قرار هست که وقتی دارید یه ماژولی رو import میکنید ، پایتون یه مسیر های مشخصی رو برای پیدا کردن اون ماژول طی میکنه که میتونید با پرینت کردن sys.path ببینید :
C:\Users\usr\Desktop\test
C:\Users\usr\...\Python39\python39.zip
C:\Users\usr\...\Python39\DLLs
C:\Users\usr\...\Python39\lib
C:\Users\usr\...\Python39
C:\Users\usr\...\Python39\lib\site-packages
پایتون این مسیر هارو "به ترتیب" از بالا تا پایین چک میکنه تا ماژولی که اسمشو جلوی import statement زدیم رو پیدا کنه و "به محض" اینکه بهش برسه همون رو برای ما import میکنه.
به مسیر ها نگاه کنید: اولین مسیر همیشه مسیری هست که script شما داخلش هست. (اگه PYTHONPATH رو set کرده باشید به عنوان مسیر دوم بعد از current directory اضافه میشه به sys.path. ) یه مسیر دیگه اون folder عه site-packages هست که میبینید. این دقیقا همونجایی هست که پکیج هایی که نصب میکنید داخلش میرن. باقی مسیر ها هم برای ماژول های دیگه ی پایتون هستند.
حالا میتونیم دلیلشو متوجه بشیم چرا پایتون توی هر دو مثالی که اول پست زدیم اول پکیج مارو پیدا کرد... site-package و فولدر های دیگه ای که ماژول های خود پایتون داخلش هستن "بعد" از اولین مسیری که داخل لیست دیدیم سرچ میشن پس در نتیجه اینجا datetime داره اشاره میکنه به همین ماژولی که داریم توش کد میزنیم(مثال اول) یا اون ماژول datetime ای که کنار فایمون ساختیم (مثال دوم)... اونو پایتون پیدا میکنه و میاره و خب طبیعتا ما چیزی به عنوان "date" تعریف نکرده بودیم !!
اگه کمی کلی تر بخوایم بگیم در واقع "هرجا" از این مسیرها یه فایل datetime.py قرار بدیم که نسبت به اونی که پایتون توی استاندارد لایبرری قرار داده جلوتر باشه این مشکل رو داریم...
سوال: همه ی ماژول ها به همین صورت هستن ؟ نه ! اون هایی که داخل مفسر compile شدن شامل موارد بالا نمیشن یعنی اگه اسم فایلتون رو این اسامی بذارین باعث نمیشه پایتون اونارو پیدا کنه اول. اینجوری ببینینشون :
gc —> garbage collection
@raspberry_python
مثال: من قرار هست با تاریخ کمی کار کنم و خب ماژول datetime رو که پایتون توی استاندارد لایبرری گذاشته رو import میکنم. ولی اسم فایل یا ماژولی که دارم کد میزنم داخلش رو میذارم datetime.py !
# datetime.pyاروری دریافت میکنم :
import datetime
t = datetime.date(2020, 10, 10)
print(t)
AttributeError: partially initialized module 'datetime' has no attribute 'date' (most likely due to a circular import)
این ارور تا حدی خوبه یه چیزایی داره بهمون راجع partially initialized شدن و همچنین circular import میگه...
سناریوی بد موقعی هست که اسم فایلی که دارم توش کد میزنم datetime نیست ولی کنار فایلم توی "همون پوشه" یه فایل به اسم datetime.py به اشتباه درست کردم و خالی هست... حالا چی :
# main.pyمتن ارور :
import datetime
t = datetime.date(2020, 10, 10)
print(t)
AttributeError: module 'datetime' has no attribute 'date'
این جا دیگه نه تنها کمک نمیکنه بلکه باعث میشه اول فکر کنیم که خب آها حتما این ماژول قبلا attribute عه date رو داشته الان حذف کردن برم ببینم معادلش چیه! یا اگه مثلا datetime ماژولی بوده باشه که نصب کرده بودیم، حتما ما ورژن دیگه ای ازشو نصب کردیم... ما که عین کدی که مثلا توی ویدیو آموزشی هست رو داریم میزنیم چرا میگه date رو نداره ؟؟
ماجرا از این قرار هست که وقتی دارید یه ماژولی رو import میکنید ، پایتون یه مسیر های مشخصی رو برای پیدا کردن اون ماژول طی میکنه که میتونید با پرینت کردن sys.path ببینید :
import sysتوی ویندوز حدودا(ممکنه بسته به نسخه پایتون و platform ترتیبش فرق کنه یا کم و زیاد باشه ما کاری به این قضیه نداریم) به این شکل هست: (اون فولدر test فولدری هست که ماژولی که داره ران میشه داخلش هست)
for path in sys.path:
print(path)
C:\Users\usr\Desktop\test
C:\Users\usr\...\Python39\python39.zip
C:\Users\usr\...\Python39\DLLs
C:\Users\usr\...\Python39\lib
C:\Users\usr\...\Python39
C:\Users\usr\...\Python39\lib\site-packages
پایتون این مسیر هارو "به ترتیب" از بالا تا پایین چک میکنه تا ماژولی که اسمشو جلوی import statement زدیم رو پیدا کنه و "به محض" اینکه بهش برسه همون رو برای ما import میکنه.
به مسیر ها نگاه کنید: اولین مسیر همیشه مسیری هست که script شما داخلش هست. (اگه PYTHONPATH رو set کرده باشید به عنوان مسیر دوم بعد از current directory اضافه میشه به sys.path. ) یه مسیر دیگه اون folder عه site-packages هست که میبینید. این دقیقا همونجایی هست که پکیج هایی که نصب میکنید داخلش میرن. باقی مسیر ها هم برای ماژول های دیگه ی پایتون هستند.
حالا میتونیم دلیلشو متوجه بشیم چرا پایتون توی هر دو مثالی که اول پست زدیم اول پکیج مارو پیدا کرد... site-package و فولدر های دیگه ای که ماژول های خود پایتون داخلش هستن "بعد" از اولین مسیری که داخل لیست دیدیم سرچ میشن پس در نتیجه اینجا datetime داره اشاره میکنه به همین ماژولی که داریم توش کد میزنیم(مثال اول) یا اون ماژول datetime ای که کنار فایمون ساختیم (مثال دوم)... اونو پایتون پیدا میکنه و میاره و خب طبیعتا ما چیزی به عنوان "date" تعریف نکرده بودیم !!
اگه کمی کلی تر بخوایم بگیم در واقع "هرجا" از این مسیرها یه فایل datetime.py قرار بدیم که نسبت به اونی که پایتون توی استاندارد لایبرری قرار داده جلوتر باشه این مشکل رو داریم...
سوال: همه ی ماژول ها به همین صورت هستن ؟ نه ! اون هایی که داخل مفسر compile شدن شامل موارد بالا نمیشن یعنی اگه اسم فایلتون رو این اسامی بذارین باعث نمیشه پایتون اونارو پیدا کنه اول. اینجوری ببینینشون :
import sysفرض کنید مثلا gc.py شما زود تر پیدا میشد...
for i in sys.builtin_module_names:
print(i)
gc —> garbage collection
@raspberry_python
🐍 Python & Raspberry 🐍
سوالی ک پیش میاد در چ مواقعی دوست داریم ک از این قابلیت استفاده کنیم تو برنامه هامون؟ برای جواب دادن ب این سوال اول باید به یک تفاوت اساسی بین yield و return اشاره کنم و تفاوتش تو اینه که وقتی از return استفاده میکنیم همه دیتاها داخل رم لود میشن و همشون…
خروجی این کد چیست ؟
@raspberry_python
@raspberry_python
خروجی کد بالا چیست؟
Final Results
7%
1
10%
12
5%
123
1%
4
1%
45
13%
456
21%
12456
10%
124563
4%
123456
27%
Error!!1
🐍 Python & Raspberry 🐍
خروجی کد بالا چیست؟
این ک علامت تعجب اخر رو نوشتنی شیفت نگرفتم شمارو یاد چی میندازه؟ :)))))
generate_daaset.zip
4.2 MB
با استفاده از این کدها میتونید دیتاهای جدید برای ocr با فونتهای موردنظر خودتون تولید کنید
نوشته شده توسط:
@Ali_b_771
@raspberry_python
نوشته شده توسط:
@Ali_b_771
@raspberry_python
Converting CSV to Excel with Python
https://www.blog.pythonlibrary.org/2021/09/25/converting-csv-to-excel-with-python/
@raspberry_python
https://www.blog.pythonlibrary.org/2021/09/25/converting-csv-to-excel-with-python/
@raspberry_python