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 - [email protected]
http://mail.python.org/mailman/listinfo/tutor