diff --git a/pyflakes/checker.py b/pyflakes/checker.py
index 754ab30..47a59ba 100644
--- a/pyflakes/checker.py
+++ b/pyflakes/checker.py
@@ -548,7 +548,7 @@ class FunctionScope(Scope):
     """
     usesLocals = False
     alwaysUsed = {'__tracebackhide__', '__traceback_info__',
-                  '__traceback_supplement__'}
+                  '__traceback_supplement__', '__debuggerskip__'}
 
     def __init__(self):
         super().__init__()
@@ -1003,14 +1003,17 @@ class Checker:
         # don't treat annotations as assignments if there is an existing value
         # in scope
         if value.name not in self.scope or not isinstance(value, Annotation):
-            cur_scope_pos = -1
-            # As per PEP 572, use scope in which outermost generator is defined
-            while (
-                isinstance(value, NamedExprAssignment) and
-                isinstance(self.scopeStack[cur_scope_pos], GeneratorScope)
-            ):
-                cur_scope_pos -= 1
-            self.scopeStack[cur_scope_pos][value.name] = value
+            if isinstance(value, NamedExprAssignment):
+                # PEP 572: use scope in which outermost generator is defined
+                scope = next(
+                    scope
+                    for scope in reversed(self.scopeStack)
+                    if not isinstance(scope, GeneratorScope)
+                )
+                # it may be a re-assignment to an already existing name
+                scope.setdefault(value.name, value)
+            else:
+                self.scope[value.name] = value
 
     def _unknown_handler(self, node):
         # this environment variable configures whether to error on unknown

diff --git a/pyflakes/test/test_other.py b/pyflakes/test/test_other.py
index aebdcea..0af87ec 100644
--- a/pyflakes/test/test_other.py
+++ b/pyflakes/test/test_other.py
@@ -1349,6 +1349,16 @@ class TestUnusedAssignment(TestCase):
                 __tracebackhide__ = True
         """)
 
+    def test_debuggerskipSpecialVariable(self):
+        """
+        Do not warn about unused local variable __debuggerskip__, which is
+        a special variable for IPython.
+        """
+        self.flakes("""
+            def helper():
+                __debuggerskip__ = True
+        """)
+
     def test_ifexp(self):
         """
         Test C{foo if bar else baz} statements.
@@ -1707,6 +1717,13 @@ class TestUnusedAssignment(TestCase):
             print(y)
         ''')
 
+    def test_assign_expr_generator_scope_reassigns_parameter(self):
+        self.flakes('''
+        def foo(x):
+            fns = [lambda x: x + 1, lambda x: x + 2, lambda x: x + 3]
+            return [(x := fn(x)) for fn in fns]
+        ''')
+
     def test_assign_expr_nested(self):
         """Test assignment expressions in nested expressions."""
         self.flakes('''

False Positive: walrus in a list comprehension
Minimal reproduction:

```python
def foo(x):
    fns = [lambda x: x + 1, lambda x: x + 2, lambda x: x + 3]
    return [(x := fn(x)) for fn in fns]
```

This raises F841 incorrectly asserting that the `x` variable assigned in the comprehension is never used
pyflakes/test/test_other.py::TestUnusedAssignment::test_assign_expr_generator_scope_reassigns_parameter pyflakes/test/test_other.py::TestUnusedAssignment::test_debuggerskipSpecialVariable
pyflakes/test/test_other.py::Test::test_attrAugmentedAssignment pyflakes/test/test_other.py::Test::test_breakInsideLoop pyflakes/test/test_other.py::Test::test_breakOutsideLoop pyflakes/test/test_other.py::Test::test_classFunctionDecorator pyflakes/test/test_other.py::Test::test_classNameDefinedPreviously pyflakes/test/test_other.py::Test::test_classNameUndefinedInClassBody pyflakes/test/test_other.py::Test::test_classRedefinedAsFunction pyflakes/test/test_other.py::Test::test_classRedefinition pyflakes/test/test_other.py::Test::test_classWithReturn pyflakes/test/test_other.py::Test::test_classWithYield pyflakes/test/test_other.py::Test::test_classWithYieldFrom pyflakes/test/test_other.py::Test::test_comparison pyflakes/test/test_other.py::Test::test_containment pyflakes/test/test_other.py::Test::test_continueInsideLoop pyflakes/test/test_other.py::Test::test_continueOutsideLoop pyflakes/test/test_other.py::Test::test_defaultExceptLast pyflakes/test/test_other.py::Test::test_defaultExceptNotLast pyflakes/test/test_other.py::Test::test_doubleAssignmentConditionally pyflakes/test/test_other.py::Test::test_doubleAssignmentWithUse pyflakes/test/test_other.py::Test::test_duplicateArgs pyflakes/test/test_other.py::Test::test_ellipsis pyflakes/test/test_other.py::Test::test_extendedSlice pyflakes/test/test_other.py::Test::test_functionDecorator pyflakes/test/test_other.py::Test::test_functionRedefinedAsClass pyflakes/test/test_other.py::Test::test_function_arguments pyflakes/test/test_other.py::Test::test_function_arguments_python3 pyflakes/test/test_other.py::Test::test_globalDeclaredInDifferentScope pyflakes/test/test_other.py::Test::test_identity pyflakes/test/test_other.py::Test::test_localReferencedBeforeAssignment pyflakes/test/test_other.py::Test::test_loopControl pyflakes/test/test_other.py::Test::test_modernProperty pyflakes/test/test_other.py::Test::test_moduleWithReturn pyflakes/test/test_other.py::Test::test_moduleWithYield pyflakes/test/test_other.py::Test::test_moduleWithYieldFrom pyflakes/test/test_other.py::Test::test_redefinedClassFunction pyflakes/test/test_other.py::Test::test_redefinedFunction pyflakes/test/test_other.py::Test::test_redefinedIfElseFunction pyflakes/test/test_other.py::Test::test_redefinedIfElseInListComp pyflakes/test/test_other.py::Test::test_redefinedIfFunction pyflakes/test/test_other.py::Test::test_redefinedInDictComprehension pyflakes/test/test_other.py::Test::test_redefinedInGenerator pyflakes/test/test_other.py::Test::test_redefinedInSetComprehension pyflakes/test/test_other.py::Test::test_redefinedTryExceptFunction pyflakes/test/test_other.py::Test::test_redefinedTryFunction pyflakes/test/test_other.py::Test::test_redefinedUnderscoreFunction pyflakes/test/test_other.py::Test::test_redefinedUnderscoreImportation pyflakes/test/test_other.py::Test::test_redefined_function_shadows_variable pyflakes/test/test_other.py::Test::test_starredAssignmentErrors pyflakes/test/test_other.py::Test::test_starredAssignmentNoError pyflakes/test/test_other.py::Test::test_unaryPlus pyflakes/test/test_other.py::Test::test_undefinedBaseClass pyflakes/test/test_other.py::Test::test_varAugmentedAssignment pyflakes/test/test_other.py::TestUnusedAssignment::test_assert_static pyflakes/test/test_other.py::TestUnusedAssignment::test_assert_tuple pyflakes/test/test_other.py::TestUnusedAssignment::test_assert_tuple_empty pyflakes/test/test_other.py::TestUnusedAssignment::test_assert_with_message pyflakes/test/test_other.py::TestUnusedAssignment::test_assert_without_message pyflakes/test/test_other.py::TestUnusedAssignment::test_assignInForLoop pyflakes/test/test_other.py::TestUnusedAssignment::test_assignInListComprehension pyflakes/test/test_other.py::TestUnusedAssignment::test_assignToGlobal pyflakes/test/test_other.py::TestUnusedAssignment::test_assignToMember pyflakes/test/test_other.py::TestUnusedAssignment::test_assignToNonlocal pyflakes/test/test_other.py::TestUnusedAssignment::test_assign_expr pyflakes/test/test_other.py::TestUnusedAssignment::test_assign_expr_generator_scope pyflakes/test/test_other.py::TestUnusedAssignment::test_assign_expr_nested pyflakes/test/test_other.py::TestUnusedAssignment::test_assignmentInsideLoop pyflakes/test/test_other.py::TestUnusedAssignment::test_augmentedAssignmentImportedFunctionCall pyflakes/test/test_other.py::TestUnusedAssignment::test_closedOver pyflakes/test/test_other.py::TestUnusedAssignment::test_dictComprehension pyflakes/test/test_other.py::TestUnusedAssignment::test_doubleClosedOver pyflakes/test/test_other.py::TestUnusedAssignment::test_exceptWithoutNameInFunction pyflakes/test/test_other.py::TestUnusedAssignment::test_exceptWithoutNameInFunctionTuple pyflakes/test/test_other.py::TestUnusedAssignment::test_exceptionUnusedInExcept pyflakes/test/test_other.py::TestUnusedAssignment::test_exceptionUnusedInExceptInFunction pyflakes/test/test_other.py::TestUnusedAssignment::test_exceptionUsedInExcept pyflakes/test/test_other.py::TestUnusedAssignment::test_f_string pyflakes/test/test_other.py::TestUnusedAssignment::test_generatorExpression pyflakes/test/test_other.py::TestUnusedAssignment::test_if_tuple pyflakes/test/test_other.py::TestUnusedAssignment::test_ifexp pyflakes/test/test_other.py::TestUnusedAssignment::test_listUnpacking pyflakes/test/test_other.py::TestUnusedAssignment::test_setComprehensionAndLiteral pyflakes/test/test_other.py::TestUnusedAssignment::test_tracebackhideSpecialVariable pyflakes/test/test_other.py::TestUnusedAssignment::test_tupleUnpacking pyflakes/test/test_other.py::TestUnusedAssignment::test_unusedUnderscoreVariable pyflakes/test/test_other.py::TestUnusedAssignment::test_unusedVariable pyflakes/test/test_other.py::TestUnusedAssignment::test_unusedVariableAsLocals pyflakes/test/test_other.py::TestUnusedAssignment::test_unusedVariableNoLocals pyflakes/test/test_other.py::TestUnusedAssignment::test_variableUsedInLoop pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementAttributeName pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementComplicatedTarget pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementListNames pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementNameDefinedInBody pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementNoNames pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementSingleName pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementSingleNameRedefined pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementSingleNameUndefined pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementSubscript pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementSubscriptUndefined pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementTupleNames pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementTupleNamesRedefined pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementTupleNamesUndefined pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementUndefinedInExpression pyflakes/test/test_other.py::TestUnusedAssignment::test_withStatementUndefinedInside pyflakes/test/test_other.py::TestUnusedAssignment::test_yieldFromUndefined pyflakes/test/test_other.py::TestStringFormatting::test_f_string_without_placeholders pyflakes/test/test_other.py::TestStringFormatting::test_invalid_dot_format_calls pyflakes/test/test_other.py::TestStringFormatting::test_invalid_percent_format_calls pyflakes/test/test_other.py::TestStringFormatting::test_ok_percent_format_cannot_determine_element_count pyflakes/test/test_other.py::TestAsyncStatements::test_asyncDef pyflakes/test/test_other.py::TestAsyncStatements::test_asyncDefAwait pyflakes/test/test_other.py::TestAsyncStatements::test_asyncDefUndefined pyflakes/test/test_other.py::TestAsyncStatements::test_asyncFor pyflakes/test/test_other.py::TestAsyncStatements::test_asyncForUnderscoreLoopVar pyflakes/test/test_other.py::TestAsyncStatements::test_asyncWith pyflakes/test/test_other.py::TestAsyncStatements::test_asyncWithItem pyflakes/test/test_other.py::TestAsyncStatements::test_formatstring pyflakes/test/test_other.py::TestAsyncStatements::test_loopControlInAsyncFor pyflakes/test/test_other.py::TestAsyncStatements::test_loopControlInAsyncForElse pyflakes/test/test_other.py::TestAsyncStatements::test_matmul pyflakes/test/test_other.py::TestAsyncStatements::test_raise_notimplemented pyflakes/test/test_other.py::TestIncompatiblePrintOperator::test_invalid_print_when_imported_from_future pyflakes/test/test_other.py::TestIncompatiblePrintOperator::test_print_as_condition_test pyflakes/test/test_other.py::TestIncompatiblePrintOperator::test_print_augmented_assign pyflakes/test/test_other.py::TestIncompatiblePrintOperator::test_print_function_assignment pyflakes/test/test_other.py::TestIncompatiblePrintOperator::test_print_in_lambda pyflakes/test/test_other.py::TestIncompatiblePrintOperator::test_print_returned_in_function pyflakes/test/test_other.py::TestIncompatiblePrintOperator::test_valid_print