Sấu Gấu Blog


Python3 Stuff


Python3 exception https://docs.python.org/3/library/exceptions.html

Python Path MacOS

Pandas Module Stuffs


Pandas cheat sheat https://pandas.pydata.org/Pandas_Cheat_Sheet.pdf

Drop inplace all rows which column foo has value equals bar
    df.drop(df[df['foo'] == 'bar'].index, inplace=True)
Drop inplace all rows which column foo has value in list [bar1, bar2, bar3]
    df.drop(df[df['foo'].isin(['bar1', 'bar2', 'bar3'])].index, inplace=True)
Display all column
    pd.options.display.max_columns = None
Display full text length
    pd.options.display.max_colwidth = None
Get column with nan value
    df.columns[df.isna().any()]
Get number of row with nan value
    df.isnull().any(axis=1).sum()

Useful package

Web development

Django: Web framework for building web app
    pip install Django
Gunicorn: Python WSGI Server
    pip install gunicorn

Ưu điểm khi sử dụng Django Model

Django Model Không sử dụng Django Model
Tạo Schema Models dễ dàng: Tạo các schema và models trực tiếp bằng Django. Tạo Database và Table bằng SQL: Phải tự viết các câu lệnh SQL để tạo cấu trúc database.
Tích hợp với admin page: Dễ dàng đăng ký models với admin page và sử dụng các form có sẵn. Không cần phải tự implement PUT, POST, DELETE. Phải tự định nghĩa URL và logic cho HTTP methods: Khai báo URL, implement xử lý logic cho PUT, POST, DELETE và tự viết các câu lệnh SQL tương ứng.
Tương thích với nhiều loại database: Django hỗ trợ nhiều backend database khác nhau, giúp việc chuyển đổi trở nên dễ dàng. Phải thay đổi toàn bộ câu lệnh SQL khi đổi database: Nếu muốn đổi database, phải chỉnh sửa tất cả các câu lệnh SQL đã viết.
Không cần viết câu lệnh SQL: Django tự động tạo các câu lệnh SQL dựa trên models. Cần tự viết câu lệnh SQL: Người lập trình phải tự viết và tối ưu các câu lệnh SQL.

AI

Jupyter notebook
    pip install notebook

Câu hỏi và Trả lời


Q: Làm thế nào để kiểm tra phiên bản Python?
    python --version
A: Sử dụng lệnh trên để kiểm tra phiên bản Python của bạn.

Q: Làm thế nào để tạo virtual environment?
    python -m venv myenv
A: Lệnh này tạo một virtual environment tên "myenv". Kích hoạt nó bằng:
    source myenv/bin/activate  # Trên macOS/Linux
    myenv\Scripts\activate  # Trên Windows

Q: Làm thế nào để cài đặt packages từ requirements.txt?
    pip install -r requirements.txt
A: Lệnh này cài đặt tất cả packages được liệt kê trong file requirements.txt.

Q: Làm thế nào để liệt kê tất cả packages đã cài đặt?
    pip list
A: Hiển thị tất cả packages đã cài đặt và phiên bản của chúng.

Q: Làm thế nào để lưu môi trường hiện tại vào requirements.txt?
    pip freeze > requirements.txt
A: Tạo file requirements.txt với tất cả packages hiện đang được cài đặt.

Q: Yield keyword là gì trong Python?
    def count_up_to(max):
    count = 1
    while count <= max:
        yield count
        count += 1

counter = count_up_to(5)
print(next(counter))  # 1
print(next(counter))  # 2
A: Yield là một keyword trong Python được sử dụng để tạo generator. Thay vì return một giá trị và kết thúc hàm, yield tạm dừng hàm và trả về một giá trị, sau đó có thể tiếp tục từ điểm đó khi được gọi lại. Điều này giúp tiết kiệm bộ nhớ khi làm việc với dữ liệu lớn.

Ví dụ thực tế - Async Context Manager:
    @asynccontextmanager
async def auto_run_in_start_and_end(app: PleaseSpeakApp):
    logger.info(f"Start at {datetime.now()}")
    await init_di()
    await app.init_service()
    yield
    # shutdown
    logger.info(f"System shutting down at {datetime.now()}")
    try:
        cache_service = di[CacheService]
        await cache_service.close()
        logger.info("Cache service closed successfully")
    except Exception as e:
        logger.error(f"Error closing cache service: {str(e)}")
Giải thích: Trong ví dụ này, yield được sử dụng trong async context manager để tách biệt phần setup (khởi tạo) và teardown (dọn dẹp). Code trước yield sẽ chạy khi vào context, code sau yield sẽ chạy khi thoát context. Điều này rất hữu ích cho việc quản lý tài nguyên như database connections, cache services, etc.


Ngày đăng: April 8, 2024
300 total views

Comment

anonymous: i was here
anonymous: hello