区别主要有以下几点:
1、使用import直接导入整个模块的话那么在引用模块中的变量或者函数时需要使用model.function() or model.variable的形式,因为这样只是引入了模块名,而没有把模块内容引入到当前语义表中;而from import 语句则可以直接使用函数名或变量名,没有必要在前面加模块名,因为这将命名(包括函数或变量)导入到本模块的语义表中。
2、使用import导入整个模块的话,所有的变量,包括以"_"开头的变量,都可以通过model.variable的形式访问;而如果使用from model import*的形式的话则默认不导入"_"开头的变量(函数名);不过如果使用from model import _foo的形式显式导入的话则还是可以访问这个变量(或函数)的。
模块的默认搜索路径是按照sys.path搜索的,这个变量默认已经导入了当前目录、PYTHONPATH指向的目录以及安装目录的。
如果一个python脚本引用了大量的标准模块,为了提高启动速度,当前目录下会存在一个.pyc的文件,这被视为.py文件的预编译版本。.pyc文件平台独立。
如果以-O参数调用python解释器,则.pyc文件被忽略,.py文件被全部编译成bytecode,即字节码。
如果向python解释器传递两个-O参数,则会执行完全优化的二进制优化编译,不过这偶尔会生成错误的程序,因为这样的完全优化也只是在二进制代码中删除了__doc__字符串,而如果你的python脚本中本身就引用到了__doc__字符串,那么程序就会出错,所以如果使用最优化编译选项-OO,则需要确保无误。
.pyc和.pyo文件不会比.py文件执行的快,他们只是在加载的时候比.py文件快!
posted on 2011-08-06 17:49
myjfm 阅读(818)
评论(0) 编辑 收藏 引用 所属分类:
杂