CleverDevs
8.41K subscribers
708 photos
280 videos
27 files
415 links
به کانال کلوردوز خوش اومدین

سعی میکنیم چیزایی که بنظر کاربردی هستن رو باهاتون به اشتراک بزاریم


🔥لینوکس
🔥برنامه نویسی فرانت‌اند
🔥برنامه نویسی بک‌اند
🔥اخبار تکنولوژی و...

CleverDevs are better than other Devs
💢~> @mmdrsdev
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
ترفند ایموجی در پایتون👌
از جادی عزیز
#python
@CleverDevs
@CleverDevsGp
👍17😁2🆒2👌1
توی پایتون میتونید با استفاده از * اولین ایتم و اخرین ایتم و ایتم های وسط رو جداگانه بگیرید

#python
@CleverDevs
@CleverDevsGp
24🔥11🆒3👍21🤣1
برای دیکد و اینکد کردن متن توی پایتون میتونید از کد های زیر استفاده کنید
اینکد

import base64
encoded_data = base64.b64encode("Encode this text")
print("Encoded text with base 64 is")
print(encoded_data)

دیکد


import base64
decoded_data = base64.b64decode("RW5jb2RlIHRoaXMgdGV4dA==")
print("decoded text is ")
print(decoded_data)


by @Mer_Py
#python
@CleverDevs
@CleverDevs
👍17🤣6👌1🆒1
حالا میتونید از ریال توی کتابخانه Faker پایتون استفاده کنید

Source

#python
@CleverDevs
@CleverDevsGp
👍21
تو این پست میخوام درباره venv تو پایتون توضیح بدم

وقتی شما پایتون رو روی سیستمتون نصب میکنید کلی پکیج استاندارد هم همراهش نصب میشن ولی برای بیشتر پروژه ها شما باید یه سری پکیج های ثانویه رو هم با pip نصب کنید

وقتی پروژه هاتون پیچیده تر میشه اینکه بفهمید کدوم پکیج برا کدوم پروژه‌اس سخت تر میشه همچنین ممکنه پروژه های مختلف از ورژن های مختلف یک پکیج استفاده کنن

برای اینکه پروژه هاتون رو ساختارمند تر کنید باید برای هر پروژه یک محیط مجازی درست کنید (virtual environment ) این محیط در واقع یه کپی از پایتون اصلی نصب شده رو سیستمون هست و شما میتونید همه پکیجای مربوط به پروژتون رو اینجا نصب کنید و این پکیجا با پیکج های پروژه های دیگه تداخلی نخواهند داشت



با کامند زیر میتونید یه محیط مجازی جدید هرجا که خواستید درست کنید

python -m venv /path/to/new/virtual/environment


document:
https://docs.python.org/3/library/venv.html

#python
@CleverDevs
@CleverDevsGp
🔥8👍43🆒1
مدیریت مموری میتونه تاثیر بسزایی روی پرفورمنس اپلیکیشن شما داشته باشه .

توی پایتون شما میتونید با sys.getsizeof() ببیند هر متغیری چقدر از حافظه مموری رو اشغال کرده تا اگه متغیری مصرف بهینه ای نداشت بتونید کدتون رو اصلاح کنید و به برنامتون سرعت بدید


#python
@CleverDevs - @CleverDevsGp
👍15🔥4🆒4💯1
تو پایتون با این روش میتونید یه لیست بسازید و به تعداد دلخواه ایتم با مقدار اولیه توش بزارید


#python
@CleverDevs - @CleverDevsGp
👍18🔥4❤‍🔥21👎1
توی این پست میخوام درباره assert توی پایتون توضیح بدم

این کلیدواژه که کاربرد اصلی اون برای دیباگ کردنه
یه شرط میگیره اگه شرط true باشه شتر دیدی ندیدی اما اگه اگه شرط false باشه ارور میده و برنامه متوقف میشه

همچنین میتونید یه ارور مسیج کاستوم هم براش بزاید

Devs = "stupid"
assert Devs == "Clever","Devs must be clever"
الان تعیین کردیم که اگه Devs برابر با Clever نبود ارور بده و متن ارور رو هم بعد کاما نوشتیم


مثال توی تصویر هم یکی از کاربرد های این کلیدواژه رو نوشته مثلا وقتی شما دارید یه فروشگاه با پایتون میزنید برا قسمت کد تخفیف اینطوری میتونید چک کنید که مبلغ بعد تخفیف کمتر از صفر یا بیشتر از مبلغ اصلی نباشه وگرنه AssertionError میده


#python
@CleverDevs - @CleverDevs
🔥11👍92
یکی از بچه های چنل یه چت بات ساده با پایتون نوشته که تایتل مقاله ویکی پدیا میگیره و در باره اون مقاله ازش سوال میپرسید

گیت هاب پروژه :

https://github.com/NextProduction/42

اگه هم خواستید تستش کنید فایل theproject42 رو به عنوان نوت بوک توی colab باز کنید و کد هاشو ران کنید


// شماهم اگه پروژه ای داشتید که خواستید معرفی کنید برام بفرستید
@mmdrsdev

#python #ai

@CleverDevs - @CleverDevsGp
🔥15👍4🤣31
عبارت with توی پایتون چیه و به چه دردی میخوره؟!

‏عبارت with برای مدیریت کردن خطا بدرد میخوره و میتونه کدمون رو تمیز تر و قابل خوندن تر بکنه

مدیریت فایل ها و... رو راحت تر میکنه مثلا تو کد بالا سه تیکه کد داریم که همشون یه کار انجام میدن اما سومی هم راحت تره هم مطمئن تر مثلا برخلاف دوتای اولی تو سومی نیازی نیست file.close رو بنویسید و خود with زحمتش رو برامون میکشه

تو کد بالا قسمت اول که اصلا مستعد باگه و ولش کنید قسمت دوم اوکیه ولی خب کدمون رو سخت میکنه ولی وقتی از with استفاده کی هم باگ نداری و هم کدت اسون تره در واقع سومی در نهایت به دومی ترجمه میشه


اگه خواستید بیشتر در باره with statement بدونید مقاله زیر رو بخونید
https://www.geeksforgeeks.org/with-statement-in-python/

#python
@CleverDevs - @CleverDevsGp
👍20🔥6👎2👌1
یکی از چیزای باحالی که تو پایتون هست یه شعر به اسم  zen of python هستش که اصول کد زدن درست رو توش گفته . ذن پایتون رو  Tim Peters توی سال 2004 نوشته و تو پایتون گذاشته

برای  دیدن ذن کافیه این تیکه کد زیر رو توی پایتون بنویسید

import this


و این خروجی رو بگیرید
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
CleverDevs are better than other devs


#python | peps
@CleverDevs - @CleverDevsGp
😁26👍9👌32👎1
توی پایتون همه دیتاها با آبحکت ها یا ارتباط بین آبجکت ها نشون داده میشن ; عجب زبونیه ، همش آبجکته. چیزایی مثل list , string , function توی پایتون آبجکت هستن

بر همین اساس ما یه تابع که آبجکت هست رو میتونم مثل هر ابجکت دیگه ای بریزیم توی یه متغیر دیگه یه نگاه به این کد بندازید
def yell(text):
return text.upper() + '!'

>>> yell("cleverdevs")
CLEVERDEVS


حالا میایم این تابع رو میریزیم توی یه تابع دیگه
bark = yell

>>> bark('mammad')
MAMMAD


دیدم که فانکشن دوم هم مث اولی درست حسابی کار میکنه اما اگه بیایم فانکشن اصلی رو با کلیدواژه del پاک کنیم چی میشه ؟
>>> del yell
>>> yell('hello?')
NameError: "name 'yell' is not defined"
>>> bark('hey')
'HEY!'


حالا پایتون میاد و به هر فانکشنی که میسازید یه هویت میده که میتونید با اتریبیوت name بهش دسترسی داشته باشید


>>> bark.__name__
'yell'




همونطور که میبینید هویت فانکشن bark همون yell شد چون که دقیقا یه ابجکت رو کپی کردیم رو متغیر جدید پس اتریبیوت هاش هم تغییری نکردن
اما با اینکه name اسم فانکشن اصلی رو برمیگردونه تغییر تو نحوه صدا زدن فانکشن bark برامون ایجاد نمیشه
درواقع name برای دیباگ کردن بدرد میخوره

#python
@CleverDevs - @CleverDevsGp
👍22🔥4👌31
ارور ها نقش مهمی تو برنامه نویسی و دیباگ کردن دارن و سرعت دیباگ کردن مارو چند برابر میکنن
توی پایتون ما میتونیم کلاس های exception خودمون رو تعریف کنیم و در جای مناسب به عنوان ارور بالا ببریمش

مثلا من میام و یه exception میسازم به اسم DevIsNotCleverException و از کلاس Exception که پیشفرض توی پایتون هستت ارث بری میکنم تا هروقت خواستم تو برنامه همچین اروری باشه بالا ببرمش

class DevIsNotCleverException(Exception):
pass


برای اینکه ارور رو نشون بدیم کافیه از raise استفاده کنیم

raise DevIsNotCleverException('Dev must be Clever')


حالا اگه برنامه رو اجرا کنیم ارور DevIsNotCleverException میگیریم


این ویژگی توی پایتون برای راحت تر دیباگ کردنه پس سعی کنید حتما حتما ارور های معنی دار بسازید وگرنه کار خودتون رو سخت تر میکنید و برعکس عمل میکنید در واقع

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


و اینکه من نخواستم پست طولانی بشه و مثال ساده ای ازش زدم اگه دوست داشتید برای توضیحات بیشتر میتونید یه نگاه به این لینک بندازید (فیلتره)

https://martinxpn.medium.com/custom-exceptions-in-python-creating-custom-exceptions-59-100-days-of-python-4f26de8e851d

#python
@CleverDevs - @CleverDevsGp
👍14👌6🔥42
List Slicing و عملگر سوشی توی پایتون

توی پایتون شما میتونید شما میتونید با عملگر سوشی لیست هاتون رو با حالت های مختلف برش بزنید

>>> lst = [1, 2, 3, 4, 5]
>>> lst
[1, 2, 3, 4, 5]
# lst[start:end:step]
>>> lst[1:3:1]
[2, 3]


همونطور که توی کد میبینید عملگر سوشی سه تا پارامتر داره

اولیش start یا جایی برش ازش شروع میشه که دیفالتش 0 هستش

دومین پارامتر end هستش که جایی رو نشون میده که برش تموم میشه و دیفالتش طول لیسته (فقط حواستون باشه که توی لیست جدید خود ایندکس end وجود نداره و اخرین عضو لیست ایندکس قبل end هستش)

و آخرین پارامتر هم step میشه که دیفالتش 1 هست و نشون دهنده گام های انتخاب عضوه یعنی چی ؟ مثلا اگه 1 بشه قدم هاش یدونه یدونس و همه اعضای موجود تو بازه ای که انتخاب کردید رو انتخاب میکنه یا مثلا اگه پارامتر step برابر با 2 باشه میاد و یکی در میون اعضا رو از اون بازه مورد نظر انتخاب میکنه


اما بریم سراغ مثال که کامل تر جا بیوفته موضوع

فک کنید ما یه لیست داریم اعداد 0 تا 9 و میخوایم از بین اعداد 3 تا 7 یکی در میون انتخاب کنیم برا این کار باید پارامتر start رو برابر با 3 بزاریم که شروع بازه هستش و پارامتر end رو برابر با 8 میزاریم که ایندکسش یکی بعد از ایندکس اخرین عضو لیستمونه و step رو 2 میزاریم تا گام هاش دوتا دوتا باشه و یکی در میون انتخاب کنه

>>> CleverList = [0,1,2,3,4,5,6,7,8,9]
>>> CleverList[3:8:2]
# Output : [3,5,7]


یا میتونید لیستتون رو برعکس کنید به کد زیر نگا کنید

>>> CleverList = [0,1,2,3,4,5,6,7,8,9]
>>> CleverList[::-1]
# Output : [9,8,7,6,5,4,3,2,1,0]


اومدیم و start و end رو همون مقدار دیفالتشون گذاشتیم و مقدار step رو برابر با منفی 1 گذاشتیم تا لیست رو از اخر به اول بخونه

البته میتونید جای اینکار از list.reverse() استفاده کنید

همینطور با استفاده از عملگر سوشی میتونید محتوای لیست رو خالی کنید که میتونید سرچ کنید و دربارش بخونید حتما

فقط اینکه حواستون باشه ممکنه خوانایی کدتون رو پایین بیاره و سعی کنید بیش از حد ازش استفاده نکنید

#python
@CleverDevs - @CleverDevsGp
👍14🔥4🆒3💯21👌1
توی پایتون چندین کتابخانه وجود دارند که به شما اجازه میدن کد جاوا اسکریپت را اجرا کنید💻
یکی از محبوب‌ ترینشون PyExecJS هست این کتابخانه یک اینترفیس ساده برای اجرا کردن کد جاوا اسکریپت با استفاده از موتورهای مختلف جاوا اسکریپت ارائه میده

مثال با استفاده از PyExecJS
نصب PyExecJS:
برای نصبش میتونید از pip استفاده کنید:
pip install PyExecJS

نمونه کد:
اینجا یه مثال ساده میزنم براتون:

 import execjs
# جاوا اسکریپت ساده که یک تابع تعریف می‌کند و اون رو اجرا میکنه
js_code = """
function hello(name) {
return "Hello, " + name + "!";
}
"""

# کامپایل و اجرا کد جاوا اسکریپت
ctx = execjs.compile(js_code)
result = ctx.call("hello", "World")

print(result) # باید "Hello, World!"رو پرینت کنه

سایر کتابخانه‌ها
بغیر از PyExecJS، کتابخانه‌های دیگه ای هم هستند که می‌شه ازشون برای اجرا کردن کد جاوا اسکریپت توی پایتون استفاده کرد، مثل Node.js با استفاده از ماژول subprocess پایتون. در این روش، شما میتونید یک اسکریپت جاوا اسکریپت رو اجرا کنید.

مثال با استفاده از subprocess
نمونه کد:
اینجا یه مثال ساده دیگه میزنم:
 import subprocess
# جاوا اسکریپت ساده که یک تابع تعریف می‌کند و اون رو اجرا میکنه
js_code = """
console.log("Hello, World!");
"""

# ذخیره کد جاوا اسکریپت در یک فایل
with open("script.js", "w") as file:
file.write(js_code)

# اجرا کردن فایل جاوا اسکریپت با استفاده از Node.js
result = subprocess.run(["node", "script.js"], capture_output=True, text=True)

print(result.stdout) # باید "Hello, World!" را پرینت کند

این روش انعطاف‌پذیری بیشتری میده چون شما میتونید از تمامی قابلیت‌های Node.js استفاده کنید.

#python #javascript
@CleverDevs - @CleverDevsGp
🔥9👍5🆒32👌21💯1
پارامتر های args* و kwargs** توی پایتون چی هستن ؟

توی پایتون ما علاوه برا پارامتر هایی که به طور معمول موقع تعریف تابع مشخص میکنیم دونوع پارامتر دیگه داریم که با ستاره مشخص میشن Non-keyword args و keyword args که پاس دادنشون موقع فراخوانی تابع الزامی نیست و آرگیومنت های اضافه ای که موقع فراخوانی تابع بهش پاس میدیم جای این پارامتر ها قرار میگیرن

اما چطور باید این پارامتر هارو تعریف کنیم و ازشون استفاده کنیم. فرض کنید ما یه تابع به اسم user داریم که به عنوان پارامتر اول آیدی میگیره و به عنوان پارامتر های بعدی یه سری دیتا بدون keyword مثلا اسم زبان های برنامه نویسی طرف و یه سری دیتا با keyword به عنوان اطلاعات شخصی طرف میگیره

def user(id,*langs,**userinfo):
print(id)
print(langs)
print(userinfo)

user(1,"php","python",name="Mammad",channel="CleverDevs")



حالا اگه این کد رو ران کنیم آیدی رو مثل یه پارامتر معمولی پرینت میکنه
بقیه آرگیومنت هایی که keyword ندارن میرن جزو langs که یه tuple هستش
و آرگیومنت هایی هم که که keyword دارن میرن جزو userinfo که یه dictionary هستش

و خروجی یه همچین چیزی میشه :


1
('php', 'python')
{'name': 'Mammad', 'channel': 'CleverDevs'}


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

https://www.geeksforgeeks.org/args-kwargs-python/

#python
@CleverDevs - @CleverDevsGp
2👍32🔥8👌32
یه چیزی که درباره پایتون رو مخمه ، شما به 90 درصد افراد غیربرنامه نویس بگی که برنامه نویس هستی بر میگردن میگن پایتون بلدی؟ من یه زمان پایتون یاد میگرفتم (هلو ورلد چاپ کرده)

#python #fun
@CleverDevs - @CleverDevsGp
🤣148👍21😁4💔3