Python exec和__name__
发布时间:2020-12-16 21:54:21 所属栏目:Python 来源:网络整理
导读:当我跑: exec "print __name__" 它打印__main__. 但是当我跑步时: exec "print __name__" in {} 它打印__builtin__. 如何使第二个例子也打印__main__? 我试图实现的是使用exec运行一段代码,以便从它的角度看它是从命令行运行的. 我想用干净的范围来修改代
当我跑:
它打印__main__. 但是当我跑步时:
它打印__builtin__. 如何使第二个例子也打印__main__? 我试图实现的是使用exec运行一段代码,以便从它的角度看它是从命令行运行的. 我想用干净的范围来修改代码,但是第二个例子打破了依赖于__name__ ==“__ main__”的代码.如何解决这个问题? 最佳答案
您可以使用
imp.load_module 代替:
这会将文件作为__main__模块导入,然后执行它. 请注意,当类型设置为imp.PY_SOURCE时,它需要一个实际的文件对象,因此如果源代码来自文件以外的其他位置,则需要创建一个临时文件. 否则,始终可以手动设置__name__:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |