On Tue, 6 Feb 2007, Tony Cappellini wrote:

> this is the caller
> ##############################
> callee=open("tester.py").read()
> exec(callee)
> eval("main(['', 'argument'])")
>
> ##############################

> this is the callee which is saved in tester.py
> ##############################
> import sys
>
> def main(arg):
>   if arg != []:
>      print"\nArgument is %s" % arg
>
> if __name__ == "__main__"":
>   main(sys.argv)
> ##############################

Hi Tony,

Ack!

This is not safe.  I would strongly recommend not to do this.  There is a 
much simpler way for the caller to be written:

############################
import tester
tester.main([], "argument")
############################

Done.  No tricks, no eval() or exec() necessary.


> Is this a useful thing to do, or bad in practice?

Very Bad to do in practice.  It seems to be deliberately trying to be 
obfuscated.


Best of wishes!
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to