# Handle a matched regex if (match := pattern.search(data)) is not None: pass # A loop that can't be trivially rewritten using 2-arg iter() while chunk := file.read(8192): pass # Reuse a value that's expensive to compute [y := f(x), y**2, y**3] # Share a subexpression between a comprehension filter clause and its output filtered_data = [y for x in data if (y := f(x)) is not None]