✔️ کلاس
در
اما اون تابع باید چه شرایطی داشته باشه؟ اون تابع باید عضوی که از فیلتر دریافت میکنه رو بگیره و یک شرط رو برسی کنه و یک مقدار
خب هدف اینکار چیه؟
آبجکت
پس وقتی برای مثال مینویسید:
#BuiltIn
🖋@Pygrammer
〰️〰️〰️〰️〰️〰️
©️@raspberry_python
filter
کلاس filter یکی از تایپهای built-in پایتون هست.در
filter ما دوتا پارامتر داریم، اولین پارامتر یا یک تابع هست یا None، و دومین پارامتر یک iterable (مثلا لیست، تاپل و ...)؛ حالا filter چیکار میکنه با اینها؟ فیلتر میاد دونه دونه از اون iterable عضو میگیره و پاس میده به اون تابع؛اما اون تابع باید چه شرایطی داشته باشه؟ اون تابع باید عضوی که از فیلتر دریافت میکنه رو بگیره و یک شرط رو برسی کنه و یک مقدار
bool برگردونه! مثلا:def is_too_long(elm) -> bool:به اون تابعی که شما به عنوان آرگومان اول به
return len(elm) > 100
filter پاس میدید اصطلاحا میگن predicate.خب هدف اینکار چیه؟
filter بر اساس مقدار bool عی که میگیره تصمیم میگیره که آیا اون عضو تایید میشه یا نه؟ چجور تایید میشه؟ وقتی که مقدار return شده به ازای اون عضو True باشه.آبجکت
filter یک iterable عه lazy هست، یعنی اینکه وقتی صداش میزنید فوری نتایج رو برنمیگردونه و رفتارش دقیقا مثل رفتار آبجکت range هست، برای مثال وقتی مینویسید >>> range(10_000_000)این ۱۰ میلیون عدد درست نمیشه و فقط یک آبجکت
range درست میشه که هر بار که شما روش next میزنید آیتم بعدی رو بهتون میدهپس وقتی برای مثال مینویسید:
>>> even_filter = filter(lambda x: x % 2 == 0, range(1, 10))یک آبجکت
filter دریافت میکنید که هربار روش next میزنید اون عضوی که در اون تابع predicate نتیجهش True شده رو برمیگردونه>>> next(even_filter)نکتهای که میمونه اینه که، پس اون
2
>>> next(even_filter)
4
>>> next(even_filter)
6
>>> next(even_filter)
8
>>> next(even_filter)
StopIteration
None که گفتیم میشه به عنوان اولین آرگومان پاس داد، چیه؟ اگر شما اولین آرگومان رو None پاس بدی، حکم این رو داره که گفته باشید تمام اعضایی رو از اون iterable بگیر که مقدار truth value اونها True باشه! مثلا:x = list(filter(None, ["", [], "Iliya", False, 0, 1]))خروجی کد بالا با توجه به توضیحات:
["Iliya", 1]پس در نهایت ساختاری که
filter میگیره به شکل زیر هست:filter(function or None, iterable) --> filter object
لازم به ذکر هست که در ماژول itertools یک تایپی وجود داره به اسم filterfalse که کاملا رفتار برعکسی نسبت به filter داره. 😁#BuiltIn
🖋@Pygrammer
〰️〰️〰️〰️〰️〰️
©️@raspberry_python
👍9🔥6
🌷🌷کتاب عالی و جدید رمزنگاری 2022 با موضوع الگوریتم های رمرنگاری
Next-generation cryptography algorithms explained: get to grips with new-age cryptography algorithms, protocols, and their implementation /
@raspberry_python
Next-generation cryptography algorithms explained: get to grips with new-age cryptography algorithms, protocols, and their implementation /
@raspberry_python
👍3
Massimo_Bertaccini_Next_generation_cryptography_algorithms_explained.pdf
10.5 MB
🌷🌷کتاب عالی و جدید رمزنگاری 2022 با موضوع الگوریتم های رمرنگاری
Next-generation cryptography algorithms explained: get to grips with new-age cryptography algorithms, protocols, and their implementation /
@raspberry_python
Next-generation cryptography algorithms explained: get to grips with new-age cryptography algorithms, protocols, and their implementation /
@raspberry_python
👍4
✔️ کلاس
این تایپ برای اولین پارامتر یک
اول از همه تایپ مپ درست مانند
کاری که map میکنه اینه که میاد دونه دونه از اون
چند مثال کاربردی 🧪
تبدیل همه اعداد یک لیست به مربع خودشان:
اگر به
〰️〰️〰️〰️〰️〰️
©️@raspberry_python
map
کلاس map یکی دیگه از تایپهای built-in پایتون است.این تایپ برای اولین پارامتر یک
Callable دریافت میکنه (مثلا یک تابع یا یک کلاس که داندر __call__ رو پیادهسازی میکنه) و پارامتر بعدیش تعداد متغیری iterable هست که بعد از callable بهش پاس میدیم. signatureعه تابع مپ به این شکل هست:map(callable, *iterables) —> map objectاما map چه کاری انجام میده؟ 🤔
اول از همه تایپ مپ درست مانند
range و فیلتر lazy iterator هست، یعنی فوری نتایج رو محاسبه نمیکنه،کاری که map میکنه اینه که میاد دونه دونه از اون
iterable (یا iterableهایی) که بهش داده شده، به اون callable پاس میده و نتیجه ای که اون callable بهش داده (در واقع مقداری که از callable ما return شده) رو هر بار که ما next میزنیم به ما برمیگردونه!چند مثال کاربردی 🧪
تبدیل همه اعداد یک لیست به مربع خودشان:
lst = [2, 4, 6, 8]تبدیل تمام استرینگهای یک لیست به شکل Uppercase خودشان:
print(list(map(lambda x: x ** 2, lst)))
Output: [4, 16, 36, 64]
lst = ["John", "David", "Mike"]نکته مهم ❗️
print(list(map(str.upper, lst)))
Output: ['JOHN', 'DAVID', 'MIKE']
اگر به
map چند تا iterable میدید، باید حواستون باشه که اون callable باید به تعداد iterableها پارامتر داشته باشه! مثال:x = list(map(lambda x, y: x + y, [1, 2, 3], [4, 5, 6]))در مثال بالا دو تا
print(x)
Output: [5, 7, 9]
iterable به مپ پاس دادیم پس باید تابعی که به map میدیم دوتا آرگومان بگیره. حالا map میاد پارامتر اول (یعنی x) رو از اولین iterable و دومی رو (یعنی y) از دومین iterable میگیره! نکته قابل توجه دیگه اینکه، این فرایند توی تابع (یعنی جمع x و y) به تعداد اعضای کوتاه ترین iterable انجام میشه! یعنی اگر یکی از iterable ها 2 عضو داشت و بقیه 5 عضو، فقط روی 2 عضو اول هر iterable مپ کار انجام میده! مثال:x = list(map(lambda x, y: x + y, [2, 3], [4, 5, 6, 4]))🖋 @Pygrammer
print(x)
Output: [6, 8]
〰️〰️〰️〰️〰️〰️
©️@raspberry_python
👍13
Forwarded from Persian python
سلام دوستان وقت بخیر
ویدیو جدید پلی لیست FastApi آپلود شد
قسمت : 8
موضوع : Query Metadata
امیدوارم که مفید بوده باشه
میتونین از لینک زیر تماشا کنین
https://youtu.be/JWrKZuIjwSU
ویدیو جدید پلی لیست FastApi آپلود شد
قسمت : 8
موضوع : Query Metadata
امیدوارم که مفید بوده باشه
میتونین از لینک زیر تماشا کنین
https://youtu.be/JWrKZuIjwSU
YouTube
آموزش Api نویس با FastApi Python ( قسمت هشتم - Query MetaData )
سلام به کانال یوتیوبی پرشین پایتون خوش آمدید
FAST API
یک وب میکرو فریمورک پایتون هست که با شعار عملکرد بالا
(high performance)
، یادگیری آسان ، کد زنی سریع و آماده برای تولید توسط آقای سباستین رامیرز تولید شده
ویژگی های اصلی این فریمورک :
سرعت : عملکرد…
FAST API
یک وب میکرو فریمورک پایتون هست که با شعار عملکرد بالا
(high performance)
، یادگیری آسان ، کد زنی سریع و آماده برای تولید توسط آقای سباستین رامیرز تولید شده
ویژگی های اصلی این فریمورک :
سرعت : عملکرد…
👍4
✔️ توسعهدهندگان حرفهای نرمافزار چه اولویتبندی دارند؟
(اولویت از زیاد به کم)
اما بالاخره افراد و پستهایی در تلگرام و اینستاگرام هستن که یکی را آنچنان برایمان بزرگ میکنند که انگار بعضیوقتها باقی وجود خارجی ندارند :))
#liewpl
〰️〰️〰️〰️〰️
©@raspberry_python
(اولویت از زیاد به کم)
----- آیا کد کار میکنه؟---- آیا تستهای automate شده دارید؟--- آیا برای کد user doc نوشته شده؟-- آیا راحت نصب میشه؟- آیا به اندازه کافی سریع هست؟اما بالاخره افراد و پستهایی در تلگرام و اینستاگرام هستن که یکی را آنچنان برایمان بزرگ میکنند که انگار بعضیوقتها باقی وجود خارجی ندارند :))
#liewpl
〰️〰️〰️〰️〰️
©@raspberry_python
👍4
Forwarded from Persian python
سلام دوستان وقت بخیر
ویدیو جدید پلی لیست Pyqt6 آپلود شد
قسمت : 25
موضوع : پروژه NotePad - قسمت اول - MenuBar , ToolBar, Actions
امیدوارم که مفید بوده باشه
میتونین از لینک زیر تماشا کنین
https://youtu.be/ERYmXKfdA-Y
ویدیو جدید پلی لیست Pyqt6 آپلود شد
قسمت : 25
موضوع : پروژه NotePad - قسمت اول - MenuBar , ToolBar, Actions
امیدوارم که مفید بوده باشه
میتونین از لینک زیر تماشا کنین
https://youtu.be/ERYmXKfdA-Y
🌐 termtosvg
termtosvg is a Unix terminal recorder written in Python
https://github.com/nbedos/termtosvg
Examples
Templates
@raspberry_python
termtosvg is a Unix terminal recorder written in Python
https://github.com/nbedos/termtosvg
Examples
Templates
@raspberry_python
👍4
🔴 گروه پایتون
@python_qa
🔴 گروه رزبری پای
@raspberry_micro
🔴 گروه رمزنگاری
@pycrypto
🔴 گروه بات تلگرام
@pyapi
🔴 گروه زبان سی،میکروکنترلر، fpga
@micro_fpga
🔴 گروه خرید و فروش قطعات الکترونیکی
@ElectronicsFreemarket
🔴 کانال زبان سی و میکروکنترلر
@c_micro
🔴 کانال میکروپایتون و اینترنت اشیا
@micropython_iot
🔴 کانال پردازش سیگنال و هوش مصنوعی
@ai_dsp
🔴 کانال آموزش پایتون و رزبری پای
@raspberry_python
🟢 کانال ریاضیات
@new_mathematical
🔴 مباحث متفرقه گروه های تخصصی
@BlindSpots
✅کانال درخواست پروژه
@project_req
🟢گروه نرم افزار متلب
@Matlab_MathWorks
@python_qa
🔴 گروه رزبری پای
@raspberry_micro
🔴 گروه رمزنگاری
@pycrypto
🔴 گروه بات تلگرام
@pyapi
🔴 گروه زبان سی،میکروکنترلر، fpga
@micro_fpga
🔴 گروه خرید و فروش قطعات الکترونیکی
@ElectronicsFreemarket
🔴 کانال زبان سی و میکروکنترلر
@c_micro
🔴 کانال میکروپایتون و اینترنت اشیا
@micropython_iot
🔴 کانال پردازش سیگنال و هوش مصنوعی
@ai_dsp
🔴 کانال آموزش پایتون و رزبری پای
@raspberry_python
🟢 کانال ریاضیات
@new_mathematical
🔴 مباحث متفرقه گروه های تخصصی
@BlindSpots
✅کانال درخواست پروژه
@project_req
🟢گروه نرم افزار متلب
@Matlab_MathWorks
👍3
Forwarded from Persian python
سلام وقت بخیر
ویدیو جدید پلی لیست Pyqt6 آپلود شد
قسمت : 9
موضوع: Body Validator
امیدوارم که مفید بوده باشه
میتونین از لینک زیر تماشا کنین
https://youtu.be/apTbcp4xDvE
ویدیو جدید پلی لیست Pyqt6 آپلود شد
قسمت : 9
موضوع: Body Validator
امیدوارم که مفید بوده باشه
میتونین از لینک زیر تماشا کنین
https://youtu.be/apTbcp4xDvE
YouTube
آموزش Api نویس با FastApi Python ( قسمت نهم - Body Validator )
سلام به کانال یوتیوبی پرشین پایتون خوش آمدید
FAST API
یک وب میکرو فریمورک پایتون هست که با شعار عملکرد بالا
(high performance)
، یادگیری آسان ، کد زنی سریع و آماده برای تولید توسط آقای سباستین رامیرز تولید شده
ویژگی های اصلی این فریمورک :
سرعت : عملکرد…
FAST API
یک وب میکرو فریمورک پایتون هست که با شعار عملکرد بالا
(high performance)
، یادگیری آسان ، کد زنی سریع و آماده برای تولید توسط آقای سباستین رامیرز تولید شده
ویژگی های اصلی این فریمورک :
سرعت : عملکرد…
👍3
Constant folding:
فرض کنید قرار هست تا یک فانکشن بنویسیم تا به ما تعداد ثانیه های موجود در یکسال رو بده. به سه شکل میتونیم بنویسیم:
از نظر خوانایی :
تو فانکشن fn1 کاملا مشخص هست که اون عدد ها چین از کجا اومدن ، خروجی چی هست... تو fn2 میشه یه حدس هایی زد که خروجی ما حاصل ضرب چه عدد هایی بوده توی فانکشن سوم هیچ نظری نمیشه داد که اون عدد چیه.
از نظر performance چی؟
اگه با واژه ی constant folding آشنا نبوده باشید احتمالا حدس میزنید که به همون میزان که از خوانایی داره کم میشه، به سرعت داره اضافه میشه. ولی توی runtime اینطور نیست:
پایتون زمانی که داره کد شمارو compile میکنه یه سری optimization های ریز انجام میده مثلا وقتی به عبارت :
پس زمانی که کد شما compile شد دیگه "حاصل" اون عبارت که 31536000 باشه برمیگرده موقع کال کردن و دقیقا انگار که fn3 رو کال کرده باشید.
توی اولی ولی اینطور نیست. هربار که شما فانکشن fn1 رو کال کنید پایتون اول میاد ۳۶۵ رو میگیره ذخیره میکنه تو days بعد ۲۴ رو میگیره ذخیره میکنه تو hours همینطور تا انتها... خط آخر هم میاد days و hours و minutes و seconds رو از local variable ها میگیره و تو هم ضرب میکنه و حاصل رو برمیگردونه.
✅ و در آخر فقط زمانی باید performance براتون مهم باشه که کدتون رو profile کردین و دیدین سرعت پایین فلان بخش از کد داره تاثیر جدی میذاره و بودن یا نبودن فلان عنصر تفاوت قابل توجهی داره ایجاد میکنه. شاید مثال خیلی خوبی نبود صرفا هدف گفتن constant folding بود چون با کامنت گذاری و docstring خوانایی کد رو به راحتی میتونید بالا ببرید. (در ضمن comment ها توی پروسه compile کاملا ignore میشن.) اگه خواستید docstring ها رو هم موقع compile نادیده بگیره پایتون:
@raspberry_python
فرض کنید قرار هست تا یک فانکشن بنویسیم تا به ما تعداد ثانیه های موجود در یکسال رو بده. به سه شکل میتونیم بنویسیم:
def fn1():اینا چه فرق هایی باهم دارن ؟
days = 365
hours = 24
minutes = 60
seconds = 60
return days * hours * minutes * seconds
def fn2():
return 365 * 24 * 60 * 60
def fn3():
return 31536000
از نظر خوانایی :
تو فانکشن fn1 کاملا مشخص هست که اون عدد ها چین از کجا اومدن ، خروجی چی هست... تو fn2 میشه یه حدس هایی زد که خروجی ما حاصل ضرب چه عدد هایی بوده توی فانکشن سوم هیچ نظری نمیشه داد که اون عدد چیه.
از نظر performance چی؟
اگه با واژه ی constant folding آشنا نبوده باشید احتمالا حدس میزنید که به همون میزان که از خوانایی داره کم میشه، به سرعت داره اضافه میشه. ولی توی runtime اینطور نیست:
پایتون زمانی که داره کد شمارو compile میکنه یه سری optimization های ریز انجام میده مثلا وقتی به عبارت :
365 * 24 * 60 * 60میرسه میدونه که این ۴ تا مقادیر ثابت هستن نمیشه که تغییر پیدا کنن پس میگه دلیلی نداره من هربار که fn2 رو کسی کال کرد بیام این ۴ تا عدد رو تو هم ضرب کنم و حاصل رو برگردونم. من میام یه بار حاصلش رو حساب میکنم و به جای اون عبارت قرارش میدم.
پس زمانی که کد شما compile شد دیگه "حاصل" اون عبارت که 31536000 باشه برمیگرده موقع کال کردن و دقیقا انگار که fn3 رو کال کرده باشید.
توی اولی ولی اینطور نیست. هربار که شما فانکشن fn1 رو کال کنید پایتون اول میاد ۳۶۵ رو میگیره ذخیره میکنه تو days بعد ۲۴ رو میگیره ذخیره میکنه تو hours همینطور تا انتها... خط آخر هم میاد days و hours و minutes و seconds رو از local variable ها میگیره و تو هم ضرب میکنه و حاصل رو برمیگردونه.
✅ و در آخر فقط زمانی باید performance براتون مهم باشه که کدتون رو profile کردین و دیدین سرعت پایین فلان بخش از کد داره تاثیر جدی میذاره و بودن یا نبودن فلان عنصر تفاوت قابل توجهی داره ایجاد میکنه. شاید مثال خیلی خوبی نبود صرفا هدف گفتن constant folding بود چون با کامنت گذاری و docstring خوانایی کد رو به راحتی میتونید بالا ببرید. (در ضمن comment ها توی پروسه compile کاملا ignore میشن.) اگه خواستید docstring ها رو هم موقع compile نادیده بگیره پایتون:
python -OO your_file.py#AmirSoroush
@raspberry_python
👍18