Python Best Practices
PEP 8 Style Guide
Code Formatting
- Indentation (4 spaces)
- Maximum line length (79 characters)
- Blank lines
- Imports organization
- Whitespace usage
- Naming conventions (snake_case for functions/variables, PascalCase for classes)
Code Organization
- Module-level dunder names
- Function and class definitions order
- Docstring conventions
Virtual Environments
Creating Virtual Environments
venvmodulevirtualenvtoolcondaenvironments- Activating and deactivating environments
Best Practices
- One virtual environment per project
- Including/excluding from version control
- Requirements files
- Environment isolation
Package Management
pip
- Installing packages
- Requirements files (
requirements.txt) - Installing from requirements
- Upgrading packages
- Uninstalling packages
Poetry
- Project initialization
- Adding dependencies
pyproject.tomlfile- Lock files
- Publishing packages
Other Tools
- pipenv
- conda
- pip-tools
Testing with pytest
Writing Tests
- Test function naming
- Assert statements
- Test organization
- Fixtures
- Parametrized tests
Running Tests
- Running specific tests
- Verbose output
- Coverage reports
- Test discovery
Advanced Features
- Mocking with
unittest.mock - Pytest fixtures
- Pytest plugins
- Test configuration
Code Quality Tools
Linting
- flake8
- pylint
- black (code formatter)
- isort (import sorter)
Type Checking
- mypy
- pyright
- Type stubs
Documentation
- Docstrings (Google style, NumPy style)
- Sphinx for documentation generation
- Type hints in docstrings
Practice Questions
Test your understanding with the questions in the interactive quiz below (when available).
Resources
- PEP 8 Style Guide: https://pep8.org/
- Python Packaging Guide: https://packaging.python.org/
- pytest Documentation: https://docs.pytest.org/
- Real Python Testing Guide: https://realpython.com/python-testing/