+ -
当前位置:首页 → 问答吧 → python中exec和import的区别

python中exec和import的区别

时间:2011-04-29

来源:互联网

想深入下exec和import的区别。望各位踊跃发言~
个人见解,import中其实也执行了module的语句,但在local namespace中没用具体的语句产生的attr,只有module attr。而exec则将代码在local namespace中执行,所产生的attr都放在namespace中。所以只有可以理解成import中module的语句是在自己的namespace中执行的。欢迎拍砖~

作者: anqingxuexi   发布时间: 2011-04-29

只要知道别用exec就行了。

作者: iambic   发布时间: 2011-04-29

exec语句用来执行储存在字符串或文件中的Python语句

import 用于模块导入

最近刚好也在学习Python,只知道这么多了

作者: killua_hzl   发布时间: 2011-04-29

引用 1 楼 iambic 的回复:
只要知道别用exec就行了。

yes, 如果exec的object有太多的操作,是最好不要用,但是如果object里主要是定义,比如定义个一个class,定义一个function,那样exec进来的话,你很方便取到这个东西(eg 遍历locals),但是import进来的东西,你还需要显式的调用。
Python code

a.py
class A(object):
    pass

b.py
exec open("a.py")
locals() -> <class A>
------------------------
import a 
locals()-> <module a>

作者: anqingxuexi   发布时间: 2011-04-29

基本上,只要你用exec,你的用法就是错的。比如楼上的例子。
基本上,只要你用locals(),你的用法也是错的。楼上也是例子。
在自认是Python高手之前,不要用exec。没有例外。

作者: iambic   发布时间: 2011-04-29

引用 4 楼 iambic 的回复:
基本上,只要你用exec,你的用法就是错的。比如楼上的例子。
基本上,只要你用locals(),你的用法也是错的。楼上也是例子。
在自认是Python高手之前,不要用exec。没有例外。


愿闻其详,你说的exec用法错误?你说的意思,是不是需要exec(object, local, global)?locals()错误?不知什么意思?
并且i‘am a rookie.我是需要一些特殊的操作所以用到了exec,并且就是希望发帖出来学习.谢谢!

作者: anqingxuexi   发布时间: 2011-04-29