is it a bug in exec?

longqian9509 at gmail.com longqian9509 at gmail.com
Thu Jan 20 23:52:15 EST 2011


In pyhton 3.1, I found the following code will succeed with argument 1
to 4 and fail with argument 5 to 9. It is really strange to me. I
suspect it may be a buy in exec() function. Does anyone have some idea
about it? Thanks.


t1="""
class foo:
	def fun():
		print('foo')
def main():
	global foo
	foo.fun()
main()
"""
t2="""
class foo:
	def fun():
		print('foo')
def main():
	foo.fun()
main()
"""

import sys
import copy
if sys.argv[1]=='1':
	exec(t1)
elif sys.argv[1]=='2':
	exec(t2)
elif sys.argv[1]=='3':
	exec(t1,{},{})
elif sys.argv[1]=='4':
	exec(t2,globals(),locals())
elif sys.argv[1]=='5':
	exec(t2,{},{})
elif sys.argv[1]=='6':
	exec(t2,globals(),{})
elif sys.argv[1]=='7':
	exec(t2,{},locals())
elif sys.argv[1]=='8':
	exec(t2,copy.copy(globals()),locals())
elif sys.argv[1]=='9':
	exec(t2,globals(),copy.copy(locals()))



More information about the Python-list mailing list