execfile() can't distinguish user-defined dictionary class argument
execfile() can't distinguish user-defined dictionary class argument, run follow codes:
filename:test_execfile.py
TESTFN = '@test'
z = 0
f = open(TESTFN, 'w')
f.write('z = z+1\n')
f.write('z = z*2\n')
f.close()
execfile(TESTFN)
globals = {'a': 1, 'b': 2}
class M:
"Test mapping interface versus possible calls from execfile()."
def init(self):
self.z = 10
def getitem(self, key):
if key == 'z':
return self.z
raise KeyError
def setitem(self, key, value):
if key == 'z':
self.z = value
return
raise KeyError
locals = M()
locals['z'] = 0
execfile(TESTFN, globals, locals)
print locals['z']
CPython prints 2
IronPython throws:
"Traceback (most recent call last):
File test_execfile.py, line 27, in Initiali
File , line 0, in stub##22
TypeError: execfile: arg 3 must be dictionary"
TESTFN = '@test'
z = 0
f = open(TESTFN, 'w')
f.write('z = z+1\n')
f.write('z = z*2\n')
f.close()
execfile(TESTFN)
globals = {'a': 1, 'b': 2}
class M:
";Test mapping interface versus possible calls from execfile().";
def init(self):
self.z = 10
def getitem(self, key):
if key == 'z':
return self.z
raise KeyError
def setitem(self, key, value):
if key == 'z':
self.z = value
return
raise KeyError
locals = M()
locals['z'] = 0
execfile(TESTFN, globals, locals)
print locals['z']
Work Item Details
Original CodePlex Issue: Issue 23724 Status: Active Reason Closed: Unassigned Assigned to: Unassigned Reported on: Jul 27, 2009 at 11:43 PM Reported by: dfugate Updated on: Feb 22, 2013 at 2:12 AM Updated by: jdhardy Custom value: Reported internally at Microsoft. Test: test_builtin.py CreatedDate: 9/5/2007 NewInternalID: 409516 OldInternalID: 299393 AreaPath: IronPython\Python25