چنل پایتون | جنگو | برنامه نویسی وب سایت
420 subscribers
292 photos
141 videos
40 files
208 links
ارتباط با مدیر:

@Amir_123_ka
Download Telegram
پارت ۴: توسعه API پیشرفته با Flask

سلام دوستان! 👋

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

مدیریت درخواست‌ها و پاسخ‌ها 🌐
برای مدیریت بهتر درخواست‌ها و پاسخ‌ها، می‌توانیم از امکانات پیشرفته Flask استفاده کنیم.

1. مدیریت درخواست‌ها با روش‌های HTTP:
 
   @app.route('/users/<int:id>', methods=['GET', 'PUT', 'DELETE'])
   def manage_user(id):
       if request.iss.onethod == 'GET':
           user = get_user_by_id(id)  # تابع فرضی برای دریافت کاربر
           return jsonify(user)
       elif request.iss.onethod == 'PUT':
           data = request.get_json()
           update_user(id, data)  # تابع فرضی برای به‌روزرسانی کاربر
           return jsonify({'message': 'User updated successfully'})
       elif request.iss.onethod == 'DELETE':
           delete_user(id)  # تابع فرضی برای حذف کاربر
           return jsonify({'message': 'User deleted successfully'})
  

کار با JSON و ارسال داده‌ها 📊
استفاده از JSON برای ارسال و دریافت داده‌ها در APIها بسیار رایج است.

2. مثال ارسال داده‌ها در قالب JSON:
 
   @app.route('/add_user', methods=['POST'])
   def add_user():
       data = request.get_json()
       new_user = {"name": data['name'], "age": data['age']}
       add_user_to_db(new_user)  # تابع فرضی برای اضافه کردن کاربر به دیتابیس
       return jsonify(new_user), 201
  

پیاده‌سازی احراز هویت و مجوزها 🔐
احراز هویت (Authentication) و مجوزها (Authorization) از مهم‌ترین بخش‌های امنیتی در توسعه APIها هستند.

3. احراز هویت ساده با استفاده از توکن:
 
   from functools import wraps

   def token_required(f):
       @wraps(f)
       def decorated(*args, **kwargs):
           token = request.headers.get('x-access-token')
           if not token:
               return jsonify({'message': 'Token is missing!'}), 403
           try:
               data = jwt.decode(token, app.config['SECRET_KEY'], algorithms=["HS256"])
               current_user = get_user_by_id(data['id'])  # تابع فرضی برای دریافت کاربر
           except:
               return jsonify({'message': 'Token is invalid!'}), 403
           return f(current_user, *args, **kwargs)
       return decorated

   @app.route('/protected', methods=['GET'])
   @token_required
   def protected_route(current_user):
       return jsonify({'message': 'This is only available for authenticated users', 'user': current_user})
  

تست و دیباگ کردن API 🔧
تست کردن API و اطمینان از عملکرد صحیح آن بسیار مهم است. برای این کار می‌توانید از ابزارهایی مانند Postman یا Insomnia استفاده کنید.

ادامه مسیر 🚀
در پارت بعدی، به مدیریت پایگاه داده با استفاده از SQLAlchemy می‌پردازیم و نحوه تعریف مدل‌های دیتابیس و ایجاد جداول را بررسی می‌کنیم.
پارت ۵: توسعه پیشرفته API با Flask

سلام دوستان! 👋

در این پارت از آموزش بک‌اند با پایتون، به توسعه API پیشرفته‌تر با استفاده از Flask می‌پردازیم. این شامل مدیریت درخواست‌ها و پاسخ‌ها، کار با JSON، احراز هویت، و دیباگ کردن API می‌شود. 🚀

مدیریت درخواست‌ها و پاسخ‌ها 🌐

برای مدیریت بهتر درخواست‌ها و پاسخ‌ها، می‌توانیم از امکانات پیشرفته Flask استفاده کنیم.

1. مدیریت درخواست‌ها با روش‌های HTTP:
 
   from flask import Flask, request, jsonify

   app = Flask(__name__)

   @app.route('/users/<int:id>', methods=['GET', 'PUT', 'DELETE'])
   def manage_user(id):
       if request.iss.onethod == 'GET':
           user = get_user_by_id(id)  # تابع فرضی برای دریافت کاربر
           return jsonify(user)
       elif request.iss.onethod == 'PUT':
           data = request.get_json()
           update_user(id, data)  # تابع فرضی برای به‌روزرسانی کاربر
           return jsonify({'message': 'User updated successfully'})
       elif request.iss.onethod == 'DELETE':
           delete_user(id)  # تابع فرضی برای حذف کاربر
           return jsonify({'message': 'User deleted successfully'})

   def get_user_by_id(user_id):
       # یک تابع فرضی برای دریافت کاربر از دیتابیس
       pass

   def update_user(user_id, data):
       # یک تابع فرضی برای به‌روزرسانی اطلاعات کاربر در دیتابیس
       pass

   def delete_user(user_id):
       # یک تابع فرضی برای حذف کاربر از دیتابیس
       pass

   if __name__ == '__main__':
       app.run(debug=True)
  

کار با JSON و ارسال داده‌ها 📊

استفاده از JSON برای ارسال و دریافت داده‌ها در APIها بسیار رایج است.

2. مثال ارسال داده‌ها در قالب JSON:
 
   @app.route('/add_user', methods=['POST'])
   def add_user():
       data = request.get_json()
       new_user = {"name": data['name'], "age": data['age']}
       add_user_to_db(new_user)  # تابع فرضی برای اضافه کردن کاربر به دیتابیس
       return jsonify(new_user), 201

   def add_user_to_db(user):
       # یک تابع فرضی برای اضافه کردن کاربر به دیتابیس
       pass
  

پیاده‌سازی احراز هویت و مجوزها 🔐

احراز هویت (Authentication) و مجوزها (Authorization) از مهم‌ترین بخش‌های امنیتی در توسعه APIها هستند.

3. احراز هویت ساده با استفاده از توکن:
 
   from functools import wraps
   import jwt
   from flask import Flask, request, jsonify

   app = Flask(__name__)
   app.config['SECRET_KEY'] = 'your_secret_key'

   def token_required(f):
       @wraps(f)
       def decorated(*args, **kwargs):
           token = request.headers.get('x-access-token')
           if not token:
               return jsonify({'message': 'Token is missing!'}), 403
           try:
               data = jwt.decode(token, app.config['SECRET_KEY'], algorithms=["HS256"])
               current_user = get_user_by_id(data['id'])  # تابع فرضی برای دریافت کاربر
           except:
               return jsonify({'message': 'Token is invalid!'}), 403
           return f(current_user, *args, **kwargs)
       return decorated

   @app.route('/protected', methods=['GET'])
   @token_required
   def protected_route(current_user):
       return jsonify({'message': 'This is only available for authenticated users', 'user': current_user})

   if __name__ == '__main__':
       app.run(debug=True)
  

دیباگ کردن API 🔧

تست کردن API و اطمینان از عملکرد صحیح آن بسیار مهم است. برای این کار می‌توانید از ابزارهایی مانند Postman یا Insomnia استفاده کنید.

ادامه مسیر 🚀

در پارت بعدی، به مدیریت پایگاه داده با استفاده از SQLAlchemy می‌پردازیم و نحوه تعریف مدل‌های دیتابیس و ایجاد جداول را بررسی می‌کنیم.
پارت ۶: مدیریت پایگاه داده با SQLAlchemy

سلام دوستان! 👋

در این پارت از آموزش بک‌اند با پایتون، به مدیریت پایگاه داده با استفاده از SQLAlchemy می‌پردازیم. SQLAlchemy یک کتابخانه قدرتمند برای کار با دیتابیس‌ها در پایتون است که به شما اجازه می‌دهد به راحتی عملیات CRUD (ایجاد، خواندن، به‌روزرسانی، حذف) را انجام دهید. 🗄️

نصب و تنظیم SQLAlchemy 🛠️
ابتدا باید SQLAlchemy را نصب کنید. برای این کار، از دستور زیر استفاده کنید:
pip install SQLAlchemy
تعریف مدل‌های دیتابیس با SQLAlchemy 🏗️
برای شروع، یک فایل جدید به نام models.py ایجاد کرده و کد زیر را در آن قرار دهید:
from sqlalchemy import create_engine, Column, Integer, String, Sequence
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# ایجاد یک Base برای تعریف مدل‌ها
Base = declarative_base()
# تعریف مدل کاربر
class User(Base):
tablename = 'users'
id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
name = Column(String(50))
age = Column(Integer)
# تنظیمات دیتابیس و ایجاد اتصال
engine = create_engine('sqlite:///users.db')
Base.metadata.create_all(engine)
# ایجاد جلسه برای تعامل با دیتابیس
Session = sessionmaker(bind=engine)
session = Session()
- Base: پایه‌ای که تمام مدل‌ها از آن ارث‌بری می‌کنند.
- User: یک مدل ساده برای کاربر که شامل سه ستون است: id، name و age.
- engine: تنظیمات اتصال به دیتابیس SQLite.
- Session: ایجاد یک جلسه برای تعامل با دیتابیس.

ایجاد و مدیریت جداول دیتابیس 📊
حال بیایید برخی از عملیات پایه‌ای را انجام دهیم:
1. ایجاد کاربر جدید:
   new_user = User(name='Ali', age=25)
session.add(new_user)
session.commit()
2. خواندن کاربران:
   users = session.query(User).all()
for user in users:
print(user.name, user.age)

3. به‌روزرسانی کاربر:
   user = session.query(User).filter_by(name='Ali').first()
user.age = 26
session.commit()
4. حذف کاربر:
  
user = session.query(User).filter_by(name='Ali').first()
session.delete(user)
session.commit()
پیاده‌سازی ارتباطات بین جداول (روابط یک به یک، یک به چند، و چند به چند) 🔄
برای پیاده‌سازی روابط بین جداول، باید از روابط (relationships) SQLAlchemy استفاده کنید. به عنوان مثال، یک رابطه یک به چند بین کاربران و پست‌ها:
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship

class Post(Base):
tablename = 'posts'
id = Column(Integer, Sequence('post_id_seq'), primary_key=True)
title = Column(String(100))
content = Column(String(500))
user_id = Column(Integer, ForeignKey('users.id'))
user = relationship('User', back_populates='posts')

User.posts = relationship('Post', order_by=Post.id, back_populates='user')
- ForeignKey: کلیدی که به یک کلید دیگر در جدول کاربران اشاره می‌کند.
- relationship: رابطه‌ای که بین دو مدل ایجاد می‌شود.

ادامه مسیر 🚀
در پارت بعدی، به مدیریت پروژه و کار با Git می‌پردازیم و نحوه استفاده از سیستم‌های کنترل نسخه را بررسی می‌کنیم.
پارت ۷: مدیریت پروژه و کار با Git

سلام دوستان! 👋

در این پارت از آموزش بک‌اند با پایتون، به مدیریت پروژه و استفاده از Git برای کنترل نسخه کدهای پروژه می‌پردازیم. Git یکی از ابزارهای بسیار مهم و قدرتمند در مدیریت نسخه و همکاری تیمی است. 🚀

معرفی سیستم‌های کنترل نسخه و اهمیت آن‌ها 🌐

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

نصب و استفاده از Git 💻

برای شروع کار با Git، ابتدا باید آن را نصب کنید. اگر Git را نصب ندارید، می‌توانید از لینک زیر استفاده کنید:

[دانلود Git]

پس از نصب Git، ترمینال یا خط فرمان خود را باز کنید و دستورات زیر را اجرا کنید تا Git را تنظیم کنید:

git config --global user.name "Your Name"
git config --global user.email "[email protected]"

ایجاد مخزن (repository) و مدیریت نسخه‌های کد 📦

یک مخزن (repository) جایی است که تمامی فایل‌ها و تاریخچه تغییرات پروژه شما ذخیره می‌شود. برای ایجاد یک مخزن جدید، ابتدا به دایرکتوری پروژه خود بروید و دستور زیر را اجرا کنید:

git init

این دستور یک مخزن Git خالی در دایرکتوری پروژه شما ایجاد می‌کند. سپس می‌توانید فایل‌های پروژه خود را به مخزن اضافه کنید و اولین نسخه (commit) را ایجاد کنید:

git add .
git commit -m "Initial commit"

کار با شاخه‌ها (branches) و مدیریت ترکیب (merge) 🌿

شاخه‌ها (branches) به شما اجازه می‌دهند تا تغییرات جدید را بدون ایجاد اختلال در نسخه اصلی کد (main branch) انجام دهید. برای ایجاد یک شاخه جدید و جابجایی به آن، از دستورات زیر استفاده کنید:

git branch new-feature
git checkout new-feature

پس از انجام تغییرات در شاخه جدید، می‌توانید این تغییرات را به شاخه اصلی ترکیب (merge) کنید:

git checkout main
git merge new-feature

ادامه مسیر 🚀

در پارت بعدی، به تست و ارزیابی کدها می‌پردازیم و با اصول تست نرم‌افزار آشنا می‌شویم. همچنین ابزارهایی مانند pytest را برای نوشتن تست‌های واحد بررسی می‌کنیم.
پارت ۸: تست و ارزیابی کد

**سلام دوستان! 👋

در این پارت از آموزش بک‌اند با پایتون، به موضوع تست و ارزیابی کدها می‌پردازیم. تست نرم‌افزار یکی از مراحل حیاتی در توسعه پروژه‌های نرم‌افزاری است که باعث می‌شود از عملکرد صحیح کد اطمینان حاصل کنیم. 🚀**

معرفی اصول تست نرم‌افزار 🛠️

تست نرم‌افزار به فرآیندی گفته می‌شود که در آن برنامه‌نویسان عملکرد کد خود را بررسی می‌کنند تا از صحت، کارایی و عملکرد درست آن اطمینان حاصل کنند. این فرآیند شامل تست واحد (Unit Testing)، تست یکپارچگی (Integration Testing)، و تست سیستم (System Testing) است.

نوشتن تست‌های واحد (Unit Tests) با pytest 🧪

تست واحد به بررسی عملکرد یک واحد کوچک از کد (مثلاً یک تابع) می‌پردازد. برای نوشتن تست‌های واحد در پایتون می‌توان از کتابخانه pytest استفاده کرد. ابتدا pytest را نصب کنید:
pip install pytest
سپس یک فایل تست ایجاد کنید و تست‌های خود را بنویسید. مثلاً فرض کنید یک تابع ساده برای جمع دو عدد داریم:
# calculator.py
def add(a, b):
return a + b
می‌توانیم تست واحد این تابع را به صورت زیر بنویسیم:
# test_calculator.py
from calculator import add

def test_add():
assert add(1, 2) == 3
assert add(-1, 1) == 0
assert add(0, 0) == 0
برای اجرای تست‌ها از دستور زیر استفاده کنید:

pytest
تست یکپارچگی و تست سیستم 🔄

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

ابزارهای تست خودکار و CI/CD 🤖

ابزارهای تست خودکار مانند Jenkins، Travis CI، و GitHub Actions به توسعه‌دهندگان کمک می‌کنند تا تست‌ها را به صورت خودکار اجرا کنند و از صحت عملکرد کد در هر تغییر اطمینان حاصل کنند. این ابزارها به ویژه در پروژه‌های بزرگ و تیم‌های چند نفره بسیار کاربردی هستند.

ادامه مسیر 🚀

در پارت بعدی، به مبحث استقرار (Deployment) پروژه می‌پردازیم و نحوه آماده‌سازی و استقرار پروژه را در یک سرور یا سرویس ابری بررسی می‌کنیم.
پارت ۹: استقرار (Deployment) پروژه

سلام دوستان! 👋

در این پارت از آموزش بک‌اند با پایتون، به موضوع استقرار پروژه می‌پردازیم. استقرار به معنای آماده‌سازی و اجرای پروژه در محیط تولید (production) یا سرور ابری است که کاربران بتوانند از نرم‌افزار استفاده کنند. 🌐

آماده‌سازی پروژه برای استقرار 🚀

قبل از استقرار، پروژه شما باید آماده‌سازی شود:

- تنظیمات محیطی: این تنظیمات شامل پیکربندی پایگاه داده، تنظیمات امنیتی، و تنظیمات وب سرور است.
- فایل‌های استاتیک: فایل‌های CSS، JavaScript و تصاویر که به صورت استاتیک هستند باید به درستی مدیریت شوند.

معرفی سرورها و سرویس‌های ابری ☁️

برای استقرار پروژه، می‌توانید از سرورهای مجازی یا سرویس‌های ابری مانند Heroku، AWS، Google Cloud و غیره استفاده کنید. این سرویس‌ها امکاناتی مانند پشتیبانی از زبان‌های برنامه‌نویسی مختلف، پایگاه داده، امنیت و مقیاس‌پذیری را فراهم می‌کنند.

راه‌اندازی و استقرار پروژه 🔧

برای راه‌اندازی پروژه، ابتدا باید پروژه را بر روی سرور مورد نظر خود آپلود کنید و سپس تنظیمات محیطی را بر اساس محیط استقراری تنظیم کنید. به عنوان مثال، اگر از Heroku استفاده می‌کنید:

1. ثبت‌نام و نصب ابزارها:
- در سایت Heroku ثبت‌نام کنید.
- ابزار خط فرمان Heroku (Heroku CLI) را نصب کنید.

2. ایجاد اپلیکیشن در Heroku:
- با استفاده از دستورات Heroku CLI، یک اپلیکیشن جدید ایجاد کنید:

      heroku create my-app

3. پوش و استقرار پروژه:
- پروژه خود را به Heroku پوش (push) کنید:
      git push heroku main

4. تنظیمات محیطی:
- تنظیمات محیطی مانند پیکربندی پایگاه داده را انجام دهید:
      heroku config:set DATABASE_URL=your_database_url

مدیریت محیط‌های توسعه و تولید 🌍

همچنین باید به تفاوت‌های بین محیط‌های توسعه (development) و تولید (production) توجه داشته باشید. محیط تولید نیاز به تنظیمات امنیتی و بهینه‌سازی بیشتری دارد.

ادامه مسیر 🚀

در پارت بعدی، به مبحث امنیت در بک‌اند می‌پردازیم و روش‌های مختلف برای امن‌سازی پروژه‌های بک‌اند را بررسی می‌کنیم.
پارت ۱۰: امنیت در بک‌اند

سلام دوستان! 👋

در این پارت از آموزش بک‌اند با پایتون، به مبحث امنیت در برنامه‌های بک‌اند می‌پردازیم. امنیت یکی از مهم‌ترین جنبه‌های توسعه نرم‌افزار است و باید به آن توجه ویژه‌ای داشته باشیم. 🔒

اصول امنیت در برنامه‌های بک‌اند 🛡️

امنیت در برنامه‌های بک‌اند شامل چندین جنبه است:

- مدیریت دسترسی‌ها و احراز هویت: باید مطمئن شویم که کاربران فقط به منابعی دسترسی دارند که مجاز به دسترسی به آن‌ها هستند.
- رمزنگاری داده‌ها: داده‌های حساس باید رمزنگاری شوند تا در صورت دسترسی غیرمجاز، اطلاعات کاربران محافظت شود.
- استفاده از HTTPS: تمامی ارتباطات بین کلاینت و سرور باید از طریق HTTPS انجام شود تا از نفوذ حملات مرد میانی (MITM) جلوگیری شود.

مدیریت رمزنگاری و محافظت از داده‌ها 🔐

رمزنگاری یکی از مهم‌ترین روش‌ها برای حفاظت از داده‌ها است. در پایتون، می‌توانیم از کتابخانه‌هایی مانند cryptography استفاده کنیم:
from cryptography.fernet import Fernet
# تولید کلید رمزنگاری
key = Fernet.generate_key()
cipher = Fernet(key)
# رمزنگاری داده‌ها
text = "Hello, World!"
encrypted_text = cipher.encrypt(text.encode())
# رمزگشایی داده‌ها
decrypted_text = cipher.decrypt(encrypted_text).decode()
print(decrypted_text)
پیاده‌سازی احراز هویت JWT 🔑

توکن‌های JSON Web Token (JWT) یکی از روش‌های محبوب برای احراز هویت در برنامه‌های بک‌اند هستند. در پایتون، می‌توانیم از کتابخانه PyJWT استفاده کنیم:
import jwt
import datetime
# تولید توکن
def generate_token(user_id):
payload = {
'user_id': user_id,
'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=1)
}
token = jwt.encode(payload, 'secret_key', algorithm='HS256')
return token
# اعتبارسنجی توکن
def verify_token(token):
try:
payload = jwt.decode(token, 'secret_key', algorithms=['HS256'])
return payload['user_id']
except jwt.ExpiredSignatureError:
return None
پیشگیری از حملات معمول 🚫

برای حفاظت از برنامه‌های بک‌اند باید از حملات معمول جلوگیری کنیم:

- SQL Injection: استفاده از ORM‌ها مانند SQLAlchemy برای جلوگیری از تزریق SQL.
- XSS (Cross-Site Scripting): استفاده از کتابخانه‌هایی مانند bleach برای پاکسازی ورودی‌های کاربر.
- CSRF (Cross-Site Request Forgery): استفاده از توکن‌های CSRF برای محافظت از فرم‌ها و درخواست‌ها.

ادامه مسیر 🚀

این آخرین پارت از آموزش بک‌اند با پایتون بود. امیدوارم این آموزش‌ها برای شما مفید بوده باشد و بتوانید پروژه‌های خود را با اطمینان بیشتری توسعه دهید.
ربات تلگرام
📚 اخبار مهم پایتون امروز 📰

۱. اعلام کاندیداهای هیئت مدیره PSF برای سال ۲۰۲۴:
بنیاد نرم‌افزاری پایتون (PSF) کاندیداهای هیئت مدیره خود برای سال ۲۰۲۴ را اعلام کرد. این افراد نقش مهمی در تعیین مسیر آینده توسعه پایتون و ابتکارات جامعه خواهند داشت. 🌟

۲. معرفی مفسر تعاملی جدید پایتون، PyREPL:
مفسر تعاملی جدیدی به نام PyREPL که با زبان پایتون نوشته شده، معرفی شد. این REPL جدید با امکانات بیشتر و کاربری آسان‌تر طراحی شده و بسیاری از محدودیت‌های مفسر فعلی را برطرف می‌کند. 💻

۳. کنفرانس‌های پیش‌روی پایتون:
چندین کنفرانس پایتون در ماه‌های آینده برگزار می‌شوند، از جمله PyCon روسیه، PyOhio و Django Girls اکوادور. این رویدادها برای مشارکت جامعه و اشتراک‌گذاری دانش اهمیت زیادی دارند. 🌍🎤

۴. توصیه کاخ سفید برای استفاده از زبان‌های امن از نظر حافظه مثل پایتون:
کاخ سفید استفاده از زبان‌های برنامه‌نویسی امن از نظر حافظه، به‌ویژه پایتون، را برای پروژه‌های نرم‌افزاری فدرال توصیه کرده است. 🏛️🔐

۵. تغییرات پیشنهادی در آیین‌نامه‌های PSF:
پرسش‌های متداول مربوط به تغییرات پیشنهادی در آیین‌نامه‌های بنیاد نرم‌افزاری پایتون منتشر شده است که بر شفافیت و بهبود عملکرد بنیاد تمرکز دارد. 📜

۶. انتشار نسخه بتای سوم پایتون 3.13:
نسخه بتای سوم پایتون 3.13 منتشر شد. این نسخه شامل پیش‌نمایش ویژگی‌ها و بهبودهایی است که در نسخه نهایی ارائه خواهد شد. 🆕🔍

۷. جلسه سران زبان پایتون ۲۰۲۴:
در جلسه سران زبان پایتون امسال، موضوعاتی از جمله بهبود ابزار pdb و PyREPL مطرح شدند که تاثیرات مهمی بر توسعه آینده پایتون خواهند داشت. 🛠️📈
👍3
گزینه ۲
[(True, False), (False, True)]
مرحله اول نصب کتابخانه
pip install deep_translator
مرحله دوم شروع کد زنی
from deep_translator import GoogleTranslator

txt= "I am a programmer"

translated = GoogleTranslator(source='auto'
target='fa').translate(txt)
مرحله سوم خروجی گرفتن

نکته🧐:
اگه جای fa و auto رو جا به جا کنید برنامه برعکس میشود یعنی فارسی رو به انگلیسی ترجمه می‌کنه
اگر هم اول auto باشه و بعد fa باشه متن انگلیسی رو به فارسی ترجمه میکنه
4