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()))
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to