برنامه نویسی | Teachify
12.8K subscribers
956 photos
420 videos
231 files
637 links
برای موفق شدن 🌱 با این عبارت خداحافظی کن: "باشه فردا"🍃


Admin: @Yousef_Vafaei
Download Telegram
✔️ 22 کد تک‌خطی کاربردی در پایتون 🐍

در این پست، 22 کد کوتاه و خفن پایتون رو براتون آماده کردم که می‌تونید برای حل مسائل روزمره و کدنویسی سریع ازشون استفاده کنید.

1. معکوس کردن رشته

reversed_string = string[::-1]


2. بررسی زوج بودن عدد

is_even = lambda x: x % 2 == 0


3. اشتراک دو لیست

intersection = list(set(list1) & set(list2))


4. ترانهاده کردن ماتریس

transpose = list(zip(*matrix))


5. پرتکرارترین عنصر در لیست

most_common = max(set(list1), key=list1.count)


6. ادغام دو دیکشنری

merged_dict = {**dict1, **dict2}

7. بررسی پالیندروم بودن رشته
is_palindrome = lambda s: s == s[::-1]


8. مرتب‌سازی لیست تاپل‌ها بر اساس عنصر دوم

sorted_tuples = sorted(tuples, key=lambda x: x[1])


9. تبدیل لیست به رشته (با جداکننده دلخواه)

joined_string = ','.join(map(str, my_list))


10. تعداد تکرار یک کاراکتر در رشته

count_char = string.count('a')


11. حذف مقادیر تکراری از لیست (در ترتیب حفظ‌شده)

unique_items = list(dict.fromkeys(my_list))


12. تولید لیست در بازه مشخص

range_list = list(range(10, 51, 5))


13. برعکس کردن یک لیست
reversed_list = my_list[::-1]


14. تبدیل همه حروف رشته به کوچک

lower_case = string.lower()


15. بررسی وجود یک زیررشته در رشته اصلی

contains = 'abc' in string


16. ساخت لیست مربع اعداد

squares = [x**2 for x in range(10)]


17. حذف فاصله‌های ابتدا و انتهای رشته

trimmed_string = string.strip()


18. محاسبه طول لیست (یا رشته)

length = len(my_list)


19. تبدیل حروف به بزرگ (Uppercase)

upper_case = string.upper()


20. پیدا کردن حداقل مقدار در لیست

minimum = min(my_list)


21. پیدا کردن حداکثر مقدار در لیست

maximum = max(my_list)


22. محاسبه مجموع اعداد لیست

total = sum(my_list)


#برنامه_نویسی #پایتون #Python
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👌10👍5
✔️ جادوی دکوریتورها در پایتون 🐍

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

فرض کن می‌خوای مدت زمان اجرای یک تابع رو اندازه بگیری. به جای اینکه بارها این کد رو تکرار کنی، یه دکوریتور می‌سازی:

import time

def timer(func):
def wrapper(*args, **kwargs):
# Record the start time
start_time = time.time()

# Execute the original function
result = func(*args, **kwargs)

# Record the end time
end_time = time.time()

# Print the execution time
print(f"Execution time: {end_time - start_time:.2f} seconds")

return result
return wrapper


حالا کافیه دکوریتور رو به هر تابعی که خواستی اضافه کنی:
@timer
def slow_function():
# Simulate a slow function with sleep
time.sleep(2)
print("Function executed!")

slow_function()


خروجی:
Function executed!  
Execution time: 2.00 seconds


#برنامه_نویسی #پایتون #Python
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72
✔️ ماژول pprint: نمایش زیبای داده‌ها در پایتون!

ماژول pprint یا Pretty Print یکی از ابزارهای مفید در پایتون است که به شما کمک می‌کند دیکشنری‌ها، لیست‌ها و دیگر ساختارهای داده را به شکل خوانا و مرتب در ترمینال نمایش دهید. این ابزار به‌ویژه برای داده‌های پیچیده و بزرگ کاربرد دارد.

import pprint

data = {
"name": "Yousef",
"age": 27,
"skills": ["Python", "Django", "Git"],
"projects": [
{"name": "Website", "status": "Completed"},
{"name": "Telegram Bot", "status": "In Progress"},
],
}

pprint.pprint(data)


خروجی:
{'age': 27,
'name': 'Yousef',
'projects': [{'name': 'Website', 'status': 'Completed'},
{'name': 'Telegram Bot', 'status': 'In Progress'}],
'skills': ['Python', 'Django', 'Git']}


اگر داده‌های بزرگی دارید و از ظاهر شلوغ print خسته شده‌اید، حتماً از این ابزار استفاده کنید!

#برنامه‌نویسی #پایتون #python
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
✔️چطور محتویات داخل یک شی (Object) را ببینیم؟

وقتی در پایتون با آبجکت‌ها کار می‌کنید، گاهی لازم است تمامی ویژگی‌ها و مقادیر داخلی آن را بررسی کنید. در پایتون، هر آبجکت ویژگی‌ای به نام __dict__ دارد که تمام ویژگی‌های آن آبجکت را به صورت دیکشنری ذخیره می‌کند.

فرض کنید یک کلاس ساده داریم:

class User:
def __init__(self, name, age):
self.name = name
self.age = age
self.skills = ["Python", "Django"]

user = User("Yousef", 27)

print(user.__dict__)

خروجی:
{'name': 'Yousef', 'age': 27, 'skills': ['Python', 'Django']}

#برنامه‌نویسی #پایتون #python
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
✔️ #مسئله حل کنیم!

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

مثال:
input_list = [2, 5, 1, 2, 3, 5, 1, 2, 4]
output: 2

input_list = [2, 1, 1, 2, 3, 5, 1, 2, 4]
output: 1

input_list = [2, 3, 4, 5]
output: None


جواب در کامنت.

#برنامه‌نویسی #پایتون #python
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
✔️ لیست متد های پایتون (List Methods)

متد append() : یک عنصر به انتهای لیست اضافه می‌کند. عالی برای رشد لیست!

متد extend() : عناصر یک لیست را به انتهای لیست دیگر اضافه می‌کند. شبیه ترکیب دو لیست با هم.

متد insert() : یک عنصر را در یک موقعیت مشخص از لیست قرار می‌دهد. کنترل بیشتری روی مکان عنصر دارید.

متد pop() : آخرین عنصر لیست را حذف و بازمی‌گرداند. همچنین می‌توان با آرگومان ایندکس کار کرد.

متد remove() : اولین عنصر مطابق مقدار داده‌شده را حذف می‌کند. لیست خود را تمیز و مرتب نگه دارید!

متد sort() : عناصر لیست را به ترتیب صعودی مرتب می‌کند. خداحافظی با بی‌نظمی!

متد count() : تعداد دفعات تکرار یک مقدار مشخص در لیست را برمی‌گرداند.

#برنامه‌نویسی #پایتون #python
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Pandas Crash Course for Beginners.pdf
1.4 MB
✔️ کتاب Pandas Crash Course for Beginners 🐼

در این آموزش فشرده، یاد می‌گیرید:
+ مدیریت و تحلیل داده‌ها
+ کار با DataFrame و Series
+ فیلتر، گروه‌بندی، و مصورسازی داده‌ها

#Python #Pandas #تحلیل_داده #یادگیری
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
✔️ پیدا کردن کدهای بی‌استفاده در پروژه پایتون با ابزار Vulture 🐍

گاهی اوقات در پروژه‌های پایتون، کدهایی وجود دارند که دیگر استفاده نمی‌شوند، اما همچنان در فایل‌ها باقی مانده‌اند. این کدها می‌توانند شامل توابع، کلاس‌ها یا حتی متغیرهایی باشند که هیچ جایی فراخوانی نمی‌شوند. Vulture یک ابزار فوق‌العاده برای شناسایی این کدهای بی‌استفاده است.

برای نصب این ابزار، کافی است از دستور زیر استفاده کنید:
pip install vulture


برای اجرا، تنها کافی است نام فایل یا پوشه پروژه خود را به Vulture بدهید:
vulture your_project/

این ابزار گزارشی از کدهایی که احتمالاً بی‌استفاده هستند، نمایش می‌دهد.

#برنامه‌نویسی #پایتون #python
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73
✔️ مدیریت پکیج‌ها در پایتون با Poetry 🐍

اگر از pip و virtualenv برای مدیریت وابستگی‌های پروژه‌هات استفاده می‌کنی، Poetry قراره تجربه‌ات رو متحول کنه!

یک ابزار قدرتمند برای مدیریت وابستگی‌ها، ساخت و انتشار پکیج‌های پایتونی که همه‌چیز رو در یک محیط یکپارچه و ساده ارائه می‌ده.

چرا باید از Poetry استفاده کنیم؟
+ نصب و مدیریت وابستگی‌ها فقط با یک دستور
+ ایجاد و مدیریت محیط‌های مجازی به‌صورت خودکار
+ فرمت استاندارد و خوانا برای وابستگی‌ها (pyproject.toml)
+ نسخه‌بندی دقیق پکیج‌ها و حل هوشمندانه‌ی وابستگی‌ها
+ ساخت و انتشار پکیج‌ها در PyPI با چند دستور ساده

ایجاد پروژه جدید:
poetry new my_project

افزودن یک وابستگی:
poetry add requests

فعال‌سازی محیط مجازی:
poetry shell

اجرا کردن اسکریپت:
poetry run python script.py

ساخت پکیج و انتشار آن:
poetry build
poetry publish

ابزار Poetry کار رو برای توسعه‌دهندگان پایتونی راحت‌تر و استانداردتر می‌کنه. اگر از وابستگی‌های درهم و مشکلات نسخه‌بندی خسته شدی، Poetry یک راه‌حل عالیه!

#Python #Poetry #پایتون #مدیریت_وابستگی #برنامه_نویسی
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
13👎1
✔️ Python: Your All-in-One Toolkit! 🐍


#Python #پایتون
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
6💩1
✔️ تبدیل عدد به متن فارسی در پایتون با num2fawords!

آیا تا حالا خواستید اعداد رو به حروف فارسی تبدیل کنید؟ دیگه نیازی نیست که تابع پیچیده‌ای بنویسید! با استفاده از کتابخانه num2fawords به راحتی این کار رو انجام بدید.

نصب ابزار:
pip install num2fawords
مثال کاربردی:
from num2fawords import words

print(words(123))
صد و بیست و سه
print(words(5078))
پنج هزار و هفتاد و هشت
print(words(920001))
نهصد و بیست هزار و یک
print(words(1000000))
یک میلیون

#پایتون #برنامه_نویسی #Python
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👌9👍53🙏1🤓1
✔️ اصطلاح Database Sharding در پایتون: راهکاری برای مقیاس‌پذیری

دیتابیس Sharding یکی از تکنیک‌های مقیاس‌پذیری دیتابیس است که در آن داده‌ها به چند بخش کوچک‌تر (shard) تقسیم می‌شوند و هر بخش در یک دیتابیس یا سرور جداگانه ذخیره می‌شود. این کار باعث افزایش سرعت و کاهش فشار روی یک سرور واحد می‌شود.

در پایتون برای مدیریت Sharding می‌توان از فریمورک‌های مختلف مثل SQLAlchemy برای پایگاه‌های داده‌ی رابطه‌ای یا MongoDB برای پایگاه‌های داده‌ی NoSQL استفاده کرد.

مثال ساده Sharding در SQLAlchemy
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData
import random

# تعریف دو دیتابیس شارد شده
shard_1 = create_engine("sqlite:///shard_1.db")
shard_2 = create_engine("sqlite:///shard_2.db")

metadata = MetaData()

users = Table(
"users", metadata,
Column("id", Integer, primary_key=True),
Column("name", String)
)

# ایجاد جدول در هر shard
metadata.create_all(shard_1)
metadata.create_all(shard_2)

# تابعی برای انتخاب shard بر اساس id
def get_shard(user_id):
return shard_1 if user_id % 2 == 0 else shard_2

# درج داده‌ها در shard مناسب
def insert_user(user_id, name):
shard = get_shard(user_id)
with shard.connect() as conn:
conn.execute(users.insert().values(id=user_id, name=name))

# جستجوی داده از shard مناسب
def get_user(user_id):
shard = get_shard(user_id)
with shard.connect() as conn:
result = conn.execute(users.select().where(users.c.id == user_id)).fetchone()
return result

# افزودن داده‌های نمونه
insert_user(1, "Ali")
insert_user(2, "Sara")

# دریافت داده
print(get_user(1)) # در shard_2 ذخیره شده
print(get_user(2)) # در shard_1 ذخیره شده


در این مثال، اگر id عدد زوج باشد، در shard_1 و اگر فرد باشد، در shard_2 ذخیره می‌شود. این یک راه ساده برای Sharding است، ولی روش‌های پیشرفته‌تری مثل Range-based و Consistent Hashing هم وجود دارند.

#Python #Database #Sharding #مقیاس_پذیری

@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
✔️ معرفی Pyperclip: مدیریت آسان کلیپ‌بورد در پایتون

در بسیاری از پروژه‌های برنامه‌نویسی، نیاز به تعامل با کلیپ‌بورد سیستم وجود دارد؛ به عنوان مثال، کپی و جای‌گذاری خودکار متن یا داده‌ها. کتابخانه Pyperclip یک راهکار ساده و کارآمد برای انجام این عملیات در پایتون فراهم می‌کند.

برای استفاده از این کتابخانه، کافی است آن را با دستور زیر نصب کنید:
pip install pyperclip
+ کپی کردن متن به کلیپ‌بورد
import pyperclip
pyperclip.copy("Hello, this text has been copied to the clipboard!")

+ دریافت متن از کلیپ‌بورد
text = pyperclip.paste()
print(text)

این کتابخانه بر روی ویندوز، مک و لینوکس بدون نیاز به وابستگی‌های اضافی اجرا می‌شود و گزینه‌ای ایده‌آل برای مدیریت داده‌های متنی در کلیپ‌بورد است.

#Python #برنامه‌نویسی #کلیپ‌بورد

@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
برنامه نویسی | Teachify
Data = "022345678" Pos = Data.find("1") Pos2 = Data.rfind("2") print(Pos, Pos2)
✔️ تفاوت find() و rfind() در پایتون

در پایتون، دو متد find() و rfind() برای جستجوی یک زیررشته در یک رشته استفاده می‌شوند، اما تفاوت مهمی با هم دارند:
▪️متد find(substring) اولین وقوع substring را در رشته پیدا می‌کند.

▪️متدrfind(substring) آخرین وقوع substring را در رشته پیدا می‌کند.

برای مثال:
text = "banana"

print(text.find("a"))   # 1  (Index of the first occurrence of "a")
print(text.rfind("a"))  # 5  (Index of the last occurrence of "a")

اگر مقدار موردنظر در رشته وجود نداشته باشد، هر دو متد مقدار -1 برمی‌گردانند.

نکته:متدهای find() و rfind() در مقایسه با index() و rindex() امن‌تر هستند، زیرا در صورت نبود مقدار موردنظر، به‌جای ValueError مقدار -1 برمی‌گردانند.

#پایتون #Python
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤‍🔥2
✔️ ابزارهای مدرن برای متخصصان داده و هوش مصنوعی

اگر یک دیتاساینتیست یا مهندس هوش مصنوعی هستید، وقت آن رسیده که از ابزارهای مدرن‌تر و سریع‌تر استفاده کنید!

▪️کتابخانه Polars جایگزین بهتری برای pandas است. این کتابخانه با پردازش موازی و استفاده بهینه از حافظه، عملکرد بهتری روی داده‌های حجیم دارد. نیازی به Index ندارد و از Lazy Evaluation پشتیبانی می‌کند، که باعث کاهش مصرف منابع و افزایش سرعت می‌شود.

▪️ برای محاسبات عددی، Numba می‌تواند جایگزین numpy شود. این ابزار با کامپایل JIT، سرعت اجرای کد را تا چندین برابر افزایش می‌دهد و حتی از GPU (با CUDA) نیز پشتیبانی می‌کند. مهم‌تر از همه، می‌توان کدهای numpy را با چند تغییر کوچک در Numba اجرا کرد.

▪️ در حوزه یادگیری عمیق، JAX انتخاب بهتری نسبت به TensorFlow است. سینتکس ساده‌تر، عملکرد بهینه‌تر، تمایز خودکار پیشرفته (AutoDiff) و پشتیبانی از تبدیل‌های تابعی، آن را به گزینه‌ای ایده‌آل برای تحقیقات علمی و مدل‌های سفارشی تبدیل کرده است.

▪️ اگر هنوز از Matplotlib برای رسم نمودار استفاده می‌کنید، بهتر است Bokeh را امتحان کنید. این کتابخانه امکان ساخت نمودارهای تعاملی و تحت وب را فراهم می‌کند، برای داده‌های حجیم بهینه شده است و می‌توان با آن داشبوردهای پویا طراحی کرد.

▪️ برای مدل‌های یادگیری ماشین مبتنی بر درخت تصمیم، LightGBM نسبت به XGBoost عملکرد بهتری دارد. این کتابخانه سرعت آموزش بالاتر، مصرف حافظه کمتر و پشتیبانی بهتری از ویژگی‌های دسته‌ای (Categorical Features) دارد.

با این تغییرات، می‌توانید سرعت پردازش، کارایی مدل‌ها و بهینه‌سازی منابع را بهبود دهید.


#پایتون #Python

@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
2
✔️ تشخیص عدد زوج در پایتون با یک روش سریع‌تر!

در پایتون معمولاً برای تشخیص عدد زوج از این روش استفاده می‌کنیم:
if num % 2 == 0:

اما یک روش جالب‌تر و بهینه‌تر هم وجود دارد که از عملیات بیتی استفاده می‌کند:
if (num & 1) == 0:

در این روش، عملگر & آخرین بیت عدد را بررسی می‌کند. در نمایش باینری، اعداد زوج همیشه آخرین بیت‌شان 0 است، بنابراین نتیجه‌ی این بررسی 0 می‌شود و تشخیص عدد زوج به‌سادگی انجام می‌گیرد.

این روش در بسیاری از زبان‌های برنامه‌نویسی مثل پایتون، C، C++، جاوا و Go کار می‌کند. چون عملیات بیتی ذاتاً سبک‌تر از مدولوس % است، در برخی زبان‌ها عملکرد سریع‌تری دارد.


#پایتون #Python
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👌16👍9
✔️ جنگو 5.2 منتشر شد!

نسخه‌ی جدید جنگو (Django 5.2) با ویژگی‌های زیر منتشر شد:

+ ایمپورت خودکار مدل‌ها در شل
+ پشتیبانی از کلیدهای اصلی ترکیبی (Composite Primary Keys) 😲
+ بهبود در نحوه‌ی override کردن BoundField

این نسخه LTS (پشتیبانی طولانی‌مدت) است و تا آوریل 2028 پشتیبانی خواهد شد.

Django 5.2 Release Notes

#Django #Python
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👌13👍5❤‍🔥31
✔️ کتابخانه Pydantic چیه؟ چرا باید بشناسیمش؟

اگه با Python کار می‌کنی و دنبال یه راه تمیز و مطمئن برای اعتبارسنجی داده‌ها و ساخت مدل‌های داده‌ای هستی، حتماً باید با Pydantic آشنا بشی!

این کتابخونه چیکار می‌کنه؟
- با استفاده از type hintها مدل داده می‌سازه
- داده‌ها رو به‌صورت خودکار validate می‌کنه
- نوع‌ها رو تبدیل (casting) می‌کنه
- کار با JSON، فرم‌ها و APIها رو آسون می‌کنه

from pydantic import BaseModel

class User(BaseModel):
age: int
name: str
email: str

data = {
"age": "28",
"name": "yousef",
"email": "yousef@example.com"
}

user = User(**data)

print(user.age) # 28 ← change str to int!
print(user.name) # yousef


بدون اینکه خودمون دستی داده رو بررسی کنیم، Pydantic خودش فهمید که باید "28" رو به عدد تبدیل کنه! اگه مقدار اشتباه باشه، ارور می‌گیریم.
همچنین اگه با FastAPI کار می‌کنی، بدون که Pydantic نقش اصلی رو توی مدل‌سازی و اعتبارسنجی درخواست‌ها بازی می‌کنه.

#Python #Pydantic #FastAPI #پایتون
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
6👌3👍2
✔️ پنج روش ریورس کردن یک لیست در پایتون

@Teachify | #python_rd
👌10
✔️ چطور پایتون آرگومان‌ها رو به توابع پاس می‌ده؟

خیلی وقتا وقتی درباره‌ی ارسال آرگومان به توابع صحبت می‌شه، می‌شنویم:

Pass by Value (ارسال کپی)

Pass by Reference (ارسال خود متغیر)

اما پایتون یه مدل مخصوص خودش داره به اسم:

Pass by Object Reference
یا همون: Pass by Assignment

یعنی چی؟ بذار با یه مثال ساده توضیح بدیم:

فرض کن یه صندوق داری که توش وسیله‌س (مثل یه object پایتونی مثلاً list)
آدرسش رو روی یه کاغذ نوشتی و گذاشتی جیبت (این میشه reference)

وقتی یه تابعی می‌خواد از اون object استفاده کنه، پایتون یه کاغذ جدید درمیاره و همون آدرس رو روش می‌نویسه و می‌ده به تابع.
تابع با اون آدرس می‌تونه بره سراغ همون صندوق.

اگه چیزی از توش برداره یا تغییر بده، تو هم می‌بینی، ولی اگه یه صندوق جدید بسازه، فقط خودش اون رو داره

این دقیقاً میشه تفاوت بین mutable و immutable بودن objectها:

Mutable object (مثل list): تابع می‌تونه محتوای اصلی رو تغییر بده.

Immutable object (مثل int): تابع نمی‌تونه خودش رو تغییر بده، باید یه نسخه‌ی جدید بسازه.
مثال کد:
def demonstrate_passing_behavior(my_list, my_int):
    my_list.append(4)  # تغییر مستقیم در لیست اصلی
    my_list = list(my_list)  # ساخت کپی جدید
    my_int = my_int + 10  # ساخت int جدید، بدون تغییر عدد اصلی

original_list = [1, 2, 3]
original_int = 5
demonstrate_passing_behavior(original_list, original_int)

خروجی بعد از اجرای تابع:
original_list تغییر کرده (چون mutable بوده)

original_int همون قبلیه باقی مونده (چون immutable بوده)

در نتیجه:

> تو پایتون ما نه Pass by Value داریم، نه Pass by Reference
بلکه داریم: Pass by Object Reference

یعنی reference به object ارسال می‌شه، ولی خود reference به صورت value پاس می‌شه!

#پایتون #Python #برنامه‌نویسی

@Teachify | برنامه نویسی
👍4