[New-bugs-announce] [issue23087] Exec variable not found error

Keith Chewning report at bugs.python.org
Thu Dec 18 23:27:04 CET 2014


New submission from Keith Chewning:

If I %paste this code into an ipython shell the test passes. If this is saved to a file DictTest.py and run with ./DictTest.py -m the test fails. with the error

name 'keys' is not defined

If the variable keys is made global, as is suggested in the comment, the test passes with both methods of execution. Is there a scoping issue with executing this as a script?

I am using version: '3.4.1 |Anaconda 2.1.0 (64-bit)| (default, Sep 10 2014, 17:10:18) \n[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]'

import unittest

class DictTest(unittest.TestCase):
    def test_dict_comprehension(self):
        code = """
d = {'a':1, 'b':2, 'c':3, 'd':4}
# global keys # UNCOMMENT FOR TEST TO PASS
keys = ['a', 'd']
items = d.items()
nd = {k: v for k, v in items if k in keys}
print('>>> ' + str(nd))
"""
        try:
            exec(code)
        except Exception as e:
            self.assertTrue(False, "Exec ERROR>>> %s" % e)

def main():
    dt = DictTest()    
    dt.test_dict_comprehension()

if  __name__ =='__main__':main()

----------
messages: 232907
nosy: Keith.Chewning
priority: normal
severity: normal
status: open
title: Exec variable not found error
type: behavior
versions: Python 3.4

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue23087>
_______________________________________


More information about the New-bugs-announce mailing list