【Python 学习手册笔记】如何运行程序

原创 2015年07月06日 22:41:30

        每一个以扩展名py 结尾的Python 源代码文件都是一个模块。其他的文件可以通过导入一个模块读取这个模块的内容。导入从本质上来讲,就是载入另一个文件,并能够读取那个文件的内容;

 

         这种基于模块的方式使模块变成为Python 程序架构的核心慨念。更大的程序往往以多个模块文件的形式出现,并且导人了其他模块文件的工具。其中的一个模块文件设计成主文件,或叫做顶层文件(就是那个启动后能够运行整个程序的文件);

       

       导入文件是另 种运行文件的方发;但是在默认情况下,只是在每次会话的第一次运行(真的,不信你可以试一
下)。在第一次导入之后,其他的导入都不会再工作,甚至在另一个窗口中改变并保存了模块的源代码文也不行。

 

        但是如果真的想要 python在同一次会目中再次运行文件(不停止和重新启动会话),需要调用imp 标准库模块中可用的reload函数(这个函数也是一个Python 2.6 内置函数,但是在python3.0 中不是内置的)。
>>> fromimp import reload
>>>reload(scriptl)

         reload 函数希望获得的参数是一个已经加载了的模块对象的名称,所以如果在重载之前请确保已经成功地导入了这个模块。值得注意的是,reload 函数在模块对象的名称前还需要括号,import 则不需要reload是一个被调用的函数,而import是一个语句。

 

模块的显要特性:属性

             般意义上来说,模块往往就是变量名的封装,被认作是命名空间。在一个包中的变量名就是所谓的属性:也就是说,属性就是绑定在特定的对象上的变量名(就像一个模块)。

        在典型的应用中,导入者得到了模块文件中在顶层所定义的所有变量名。这些变量名通常被赋值给通过模块函数、类、变量以及其他被导出的工具。这些往往都会在其他文件或程序中使用。 表面上来看,一个模块文件的变量名可以通过两个Python 语句读取一import from ,以及reload 调用。
          内置函数dir() 可以获取模块可用变量名列表;

 

模块和命名空间

       一般来说, Python 程序往往由多个模块文件构成,通过import 语句连接在一起。每个模块文件是一个独立完备的变量包,即一个命名空间。一个模块文件不能看到其他文件定义的变量名,除非它显式地导入了那个文件,所以模块文件在代码文件中起到了最小化命名冲突的作用。因为每个文件都是一个独立完备的命名空间,即使在它们拼写相同的情况下,一个文件中的变量名是不会与另一个文件中的变量冲突的。

使用exec运行模块文件
例如,exec(open('module.py' ).read()) 内置函数调用,是从交互提示模式启动文件而不必导入以及随后的重载的一种方法。每次exec都运行文件的最新版本,而不需要随后的重载.
默认情况下,每次以这种方式调用exec的时候,它都重新运行文件,就好像我们把文件粘贴到了调用exec的地方. 因此, exec不需要在文件修改后进行棋块重载,它忽略了常规的模块导入逻辑。

缺点是,由于exec的工作机制就好像在调用它的地方粘贴了代码一样,和前面提到的from一样,对于当前正在使用的变量有潜在的默认覆盖的可能。

相反,基本的import语句每个进程只运行文件一次,并且它会把文件生成到一个单独的模块名称空间中, 以便它的赋值不会改变你的作用域中的变量。为模块名称空间分隔所付出的代价是, 在修改之后需要重载。

命名空间就是变量(也就是变量名)的封装。它在Python中以一个带有属性的对象的形式出现。每个模块文件自动成为一个命名空间:也就是说,一个对变量的封装,这些变量对应了顶层文件的赋值。命名空间可以避免在Python程序中的命名冲突一一因为每个模块文件都是独立完备的命名空间,文件必须明确地导入其他的文件,才能使用这些文件的变量名。

        



 

       







Python学习手册笔记

之前为了编写一个svm分词的程序而简单学了下Python,觉得Python很好用,想深入并系统学习一下,了解一些机制,因此开始阅读《Python学习手册(第三版)》。如果只是想快速入门,我在这里推荐了...
  • ghevinn
  • ghevinn
  • 2014年06月06日 16:03
  • 3364

【Python 学习手册笔记】Python 如何运行程序

当程序执行的时候,在Python内部,会将源程序编译为字节码(可能存于外存.pyc 文件 or 内存中临时存在),字节码是原源代码底层、与平台无关的表示形式,字节码可以提高程序的运行速度。之后字节码被...
  • maimang1001
  • maimang1001
  • 2015年07月04日 22:29
  • 388

python学习手册(第三章:如何运行程序)

需要牢记的第一条原则:当你对一段python代码的运行有任何疑问的时候,马上打开交互命令行并实验代码,看看会发生什么。 在文件中打印语句是必须的,但是在交互命令行中自动打印表达式的结果,不需要在交互...
  • github_35003236
  • github_35003236
  • 2017年11月23日 17:41
  • 107

《推荐系统手册》笔记

//2015年5月3日 0.推荐系统来源 如何解决信息过载: 搜索引擎:被动,智能程度低 广播:信息找人,需要用户自己过滤 信息过滤: 推荐系统:相比信息过滤,并不把信息收集作为重点 分类: 基于...
  • u013599826
  • u013599826
  • 2015年05月04日 14:06
  • 584

《python学习手册》阅读笔记5.1-5.14

不知不觉这么久没写了,两周时间,看完了字符串,列表与字典,元组与文件,整个第二部分啃完了,第三部分是语句,再往后好像就是平时写的时候没接触过的比较深的东西了,到时候应该会写详细点。...
  • zhu_free
  • zhu_free
  • 2015年05月14日 11:24
  • 1056

【整理】如何学习Python + 如何有效利用Python有关的网络资源 + 如何利用Python自带手册(Python Manual)

都差点忘了说了,在看下面所有的内容之前,对于python版本不了解的,请一定先看看这个: 【整理】总结Python2(Python 2.x版本)和Python3(Python 3.x版本)之间的...
  • menuconfig
  • menuconfig
  • 2013年03月13日 16:22
  • 1273

史上最全小程序笔记整理

1、小程序目录结构 https://mp.weixin.qq.com/s?__biz=MzU5MzM4MjgzNw==&mid=2247483654&idx=1&sn=5f61592998fd2574...
  • sinat_35615296
  • sinat_35615296
  • 2018年01月05日 20:27
  • 111

python学习手册 简记

正则例子匹配hello开头 world结尾字符串 中间的任意字符保存在group中.import re match = re.match('Hello[ \t]*(.*)world','Hello ...
  • sadfasdgaaaasdfa
  • sadfasdgaaaasdfa
  • 2016年01月07日 12:08
  • 582

python学习手册之Scrapy学习

第一章 本文假设是已经安装好了python了的,如果没有安装,可以在这里下载 python2.7.11 python3.1 当然,推荐取官网下载最新版。 https://www.python.org...
  • scoot929
  • scoot929
  • 2016年02月25日 12:45
  • 375

兄弟连_Linux常用命令学习_笔记(一)

最近在网易云课堂上,学习兄弟连主讲的Linux常用命令课程,两个老师讲的挺有趣的,这里是在学习视频的过程中记录的一些笔记,做个记录,也分享给大家。文件或目录处理命令ls ls list 文件列表 ...
  • xionghuixionghui
  • xionghuixionghui
  • 2017年03月20日 22:36
  • 2075
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Python 学习手册笔记】如何运行程序
举报原因:
原因补充:

(最多只允许输入30个字)