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


Admin: @Yousef_Vafaei
Download Telegram
✔️ آشنایی با Walrus Operator در پایتون (به معنی شیرآبی)

در نسخه ۳.۸ پایتون، اپراتوری به نام Walrus Operator (با نماد :=) معرفی شد که هدف آن ساده‌تر کردن کدنویسی در شرایط خاص است. این اپراتور به شما اجازه می‌دهد هم‌زمان یک مقدار را به یک متغیر اختصاص دهید و از آن استفاده کنید.

فرض کنید می‌خواهیم طول کلماتی از یک لیست را بررسی کنیم و فقط کلماتی که طولشان بیش از ۳ کاراکتر است را چاپ کنیم.

بدون Walrus Operator:
words = ["apple", "pie", "banana", "kiwi"]
for word in words:
if len(word) > 3:
print(word)


با Walrus Operator:
words = ["apple", "pie", "banana", "kiwi"]
for word in words:
if (length := len(word)) > 3:
print(f"{word} (length: {length})")


در کد دوم، مقدار طول کلمه (با نام length) محاسبه شده و هم‌زمان در شرط و چاپ استفاده می‌شود، بدون نیاز به محاسبه مجدد.

مثال های دیگر:

حلقه‌های ورودی:
while (user_input := input("Enter something: ")) != "exit":
print(f"You entered: {user_input}")


خواندن از فایل:
with open("data.txt") as file:
while (line := file.readline().strip()):
print(line)


#Python
@Teachify | برنامه نویسی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
✔️ 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