GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Pdb NameError in generator param and list comprehension · Issue #80052 · python/cpython

Pdb NameError in generator param and list comprehension #80052

New issue
Copy link
New issue
Copy link
Closed
Closed
Pdb NameError in generator param and list comprehension#80052
Copy link
Labels
3.7 (EOL)end of lifeend of lifeinterpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)

Description

jayanth
mannequin
opened on Feb 1, 2019
Issue body actions
BPO 35871
Nosy @xdegaye, @tirkarthi

Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

Show more details

GitHub fields:

assignee = None
closed_at = None
created_at = <Date 2019-02-01.00:25:49.653>
labels = ['interpreter-core', '3.7']
title = 'Pdb NameError in generator param and list comprehension'
updated_at = <Date 2019-02-01.05:21:32.902>
user = 'https://bugs.python.org/jayanth'

bugs.python.org fields:

activity = <Date 2019-02-01.05:21:32.902>
actor = 'jayanth'
assignee = 'none'
closed = False
closed_date = None
closer = None
components = ['Interpreter Core']
creation = <Date 2019-02-01.00:25:49.653>
creator = 'jayanth'
dependencies = []
files = []
hgrepos = []
issue_num = 35871
keywords = []
message_count = 3.0
messages = ['334639', '334646', '334647']
nosy_count = 3.0
nosy_names = ['xdegaye', 'jayanth', 'xtreak']
pr_nums = []
priority = 'normal'
resolution = None
stage = None
status = 'open'
superseder = None
type = None
url = 'https://bugs.python.org/issue35871'
versions = ['Python 3.7']

Activity

  1. jayanth commented on Feb 1, 2019

    @jayanth
    jayanthmannequin
    on Feb 1, 2019
    MannequinAuthor
    More actions

    I get a NameError for a variable in the generator param of a function or in a list comprehension. See example below. The variable is available to the program, but not to the interactive Pdb shell.

    # Test file:

    def main(nn=10):
        xx = list(range(nn))
        breakpoint()
        for ii in range(nn):
            num = sum(xx[jj] for jj in range(nn))
        print(f'xx={xx}')
    
    if __name__ == '__main__':
        main()

    $ python3
    Python 3.7.2 (default, Jan 13 2019, 12:50:15)
    [Clang 10.0.0 (clang-1000.11.45.5)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.

    >>

    $ python3 /tmp/test.py
    > /tmp/test.py(5)main()
    -> for ii in range(nn):
    (Pdb) n
    > /tmp/test.py(6)main()
    -> num = sum(xx[jj] for jj in range(nn))
    (Pdb) sum(xx[jj] for jj in range(nn))
    *** NameError: name 'xx' is not defined
    (Pdb) [xx[jj] for jj in range(nn)]
    *** NameError: name 'xx' is not defined
    (Pdb) c
    xx=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    FWIW python3 is a homebrew installation. I had the same issue with 3.7.0 as well (also homebrew):
    Python 3.7.0 (default, Sep 18 2018, 18:47:22)
    [Clang 9.1.0 (clang-902.0.39.2)] on darwin

  2. jayanth
    added
    3.7 (EOL)end of lifeend of life
    interpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)
    on Feb 1, 2019
  3. tirkarthi commented on Feb 1, 2019

    @tirkarthi
    tirkarthi
    on Feb 1, 2019
    Member
    More actions

    Thanks for the report. This seems related to bpo-21161 and bpo-26072 that contain explanation about scope where exec is called with the code and patches that fix this issue. As a possible workaround in the issues you can use "interact" command to get to a REPL where you can evaluate and exit back to pdb.

  4. jayanth commented on Feb 1, 2019

    @jayanth
    jayanthmannequin
    on Feb 1, 2019
    MannequinAuthor
    More actions

    Thanks for the "interact" tip.

    FWIW, I see this issue in 2.7.10 as well. Although the list comprehension works.

    $ python
    Python 2.7.10 (default, Oct  6 2017, 22:29:07)
    [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> ^D
    $ python /tmp/test2.py
    > /tmp/test2.py(5)main()
    -> for ii in range(nn):
    (Pdb) n
    > /tmp/test2.py(6)main()
    -> num = sum(xx[jj] for jj in range(nn))
    (Pdb) sum(xx[jj] for jj in range(nn))
    *** NameError: global name 'xx' is not defined
    (Pdb) [xx[jj] for jj in range(nn)]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    (Pdb) c
    ('xx', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

    # test2.py

    def main(nn=10):
        xx = list(range(nn))
        import pdb; pdb.set_trace()
        for ii in range(nn):
            num = sum(xx[jj] for jj in range(nn))
        print('xx', xx)
    
    if __name__ == '__main__':
        main()
  5. ezio-melotti
    transferred this issue fromon Apr 10, 2022
  6. gaogaotiantian commented on May 6, 2024

    @gaogaotiantian
    gaogaotiantian
    on May 6, 2024
    Member
    More actions

    Fix by PEP 709 + #111094

  7. gaogaotiantian
    closed this as completedon May 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.7 (EOL)end of lifeend of lifeinterpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      You are visitor 01402503 — GeezerVison does not store the pages you look up.
      Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.