python中exec和import的区别

anqingxuexi 2011-04-29 01:50:13
想深入下exec和import的区别。望各位踊跃发言~
个人见解,import中其实也执行了module的语句,但在local namespace中没用具体的语句产生的attr,只有module attr。而exec则将代码在local namespace中执行,所产生的attr都放在namespace中。所以只有可以理解成import中module的语句是在自己的namespace中执行的。欢迎拍砖~
...全文
465 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
notax 2011-04-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 anqingxuexi 的回复:]


愿闻其详,你说的exec用法错误?你说的意思,是不是需要exec(object, local, global)?locals()错误?不知什么意思?
并且……
[/Quote]

道理就象要少用system("...")吧
anqingxuexi 2011-04-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 iambic 的回复:]
基本上,只要你用exec,你的用法就是错的。比如楼上的例子。
基本上,只要你用locals(),你的用法也是错的。楼上也是例子。
在自认是Python高手之前,不要用exec。没有例外。
[/Quote]

愿闻其详,你说的exec用法错误?你说的意思,是不是需要exec(object, local, global)?locals()错误?不知什么意思?
并且i‘am a rookie.我是需要一些特殊的操作所以用到了exec,并且就是希望发帖出来学习.谢谢!
iambic 2011-04-29
  • 打赏
  • 举报
回复
基本上,只要你用exec,你的用法就是错的。比如楼上的例子。
基本上,只要你用locals(),你的用法也是错的。楼上也是例子。
在自认是Python高手之前,不要用exec。没有例外。
anqingxuexi 2011-04-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 iambic 的回复:]
只要知道别用exec就行了。
[/Quote]
yes, 如果exec的object有太多的操作,是最好不要用,但是如果object里主要是定义,比如定义个一个class,定义一个function,那样exec进来的话,你很方便取到这个东西(eg 遍历locals),但是import进来的东西,你还需要显式的调用。

a.py
class A(object):
pass

b.py
exec open("a.py")
locals() -> <class A>
------------------------
import a
locals()-> <module a>
  • 打赏
  • 举报
回复
exec语句用来执行储存在字符串或文件中的Python语句

import 用于模块导入

最近刚好也在学习Python,只知道这么多了
iambic 2011-04-29
  • 打赏
  • 举报
回复
只要知道别用exec就行了。

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧