Advanced commenting techniques in Python focus on making your comments more structured, readable, and effective. Below are some advanced techniques:
1. Use Docstrings for Documentation
Use triple-quoted strings to document modules, classes, and functions.
Docstrings are accessible at runtime via the __doc__ attribute, making them useful for tools like help().
-
Example: Function Docstring
def calculate_area(length, width): """ Calculate the area of a rectangle. Parameters: length (float): The length of the rectangle. width (float): The width of the rectangle. Returns: float: The calculated area of the rectangle. """ return length * width
- Example: Class Docstring
class Circle: """ A class to represent a circle. Attributes: radius (float): Radius of the circle. """ def __init__(self, radius): """ Initialize the circle with a radius. Parameters: radius (float): The radius of the circle. """ self.radius = radius
2. TODO Comments
Use TODO comments to mark areas that need improvement or future work.
Prefix with TODO: for clarity, often followed by the contributor’s name or a ticket reference.
- Example:
# TODO: Refactor this function to improve readability (John Doe, Issue #123) def legacy_function(): pass
3. Section Headers
Use comments to create section headers, especially in large scripts or modules.
These help in logically grouping related blocks of code.
- Example:
# ============================== # Initialization # ============================== config = load_config() # ============================== # Data Processing # ============================== processed_data = process_data(raw_data)
4. Comment Formatting
Use consistent formatting styles like uppercase TODO, aligned comments, or tags for specific types of comments.
- Example:
# INFO: This section handles user authentication user = authenticate_user(credentials) # FIXME: Handle edge case for invalid tokens if not user: raise ValueError("Invalid credentials")
5. Inline Annotations
Use inline comments sparingly to clarify non-obvious code.
- Example:
# Probability threshold for classification threshold = 0.75 if probability > threshold: return "Positive"
6. Leverage Type Hints with Comments
If you can’t use Python 3’s type hints, comments can describe input/output types for complex cases.
- Example:
def add_numbers(a, b): # type: (int, int) -> int return a + b
7. Commenting Out Code Blocks
Temporarily disable code by commenting it out.
Add a note explaining why the code is commented.
- Example:
# The following block is disabled due to performance issues. # data = fetch_large_dataset() # analyze_data(data)
8. Use Code Commenting Tools
- Tools like pylint or flake8 enforce good commenting practices.
- Use IDE features or plugins to highlight TODOs or add structured comments.
9. Special Tags for Collaboration
Use tags like TODO, FIXME, BUG, NOTE, and HACK to organize comments for teams.
- Examples:
# NOTE: This function is used only for debugging purposes. def debug_info(): pass # HACK: Quick fix for edge case, needs proper implementation.