12章模块

1.名称空间(名称到对象的映射)

  a. 在执行期间有两个或三个名称空间(局部,全局, 内建),其中局部在执行期间不断变化,从名称空间中访问这些名字依赖于加载顺序。首先解释器加载内建名称空间,由__builtins__模块中名字构成,随后加载执行快的全局名称空间,它会在模块执行后变为活动名称空间。

(__builtins__和__builtin__模块区别,__builtins__模块包含内建名称空间内建名字的集合,大多数来自__builtin__模块,该模块包含内建函数,异常以及其他属性,标准执行

环境下__builtins__包含所有__builtin__名字)

在执行期间调用一个函数,将创建出局部名称空间

b. 访问一个属性时解释器必须在三个名称空间中的一个找到它, 查找顺序局部--全局--内建

2.导入模块

  使用import 一次导入多个模块和分多次导入,性能没什么区别

  如果在一个模块顶部导入,作用域是全局,在函数内部导入,作用域是局部

3. 模块导入的特性

  a. 加载模块会导致这个模块被"执行",包括检查如__name__的操作即存在__name__ == "__main__"执行后续代码。

  b. 一个模块只被加载一次,即如果模块导入sys模块,而其他要导入的模块中也导入sys,那么加载只在第一次时进行。

  c. 只从模块导入名字,那么这些名词会成为局部名称空间的一部分,可能导致覆盖一个已经存在相同名字的对象。

例如:提供两个模块代码:一个导入者impter.py和一个被导入者imptee.py, impter.py使用from-import创建局部绑定

#imptee.py
foo = ‘abc‘
def show():
    print ‘foo from imptee‘, foo
#impter.py
from imptee import foo, show
show()
foo = 1234
print ‘foo from impter‘, foo
show()

运行程序,发现从被导入者观点看, foo值没有改变即使在impter.py中修改了

foo from imptee abc

foo from impter 1234

foo from imptee abc

当使用import 完整的标识符名称

#impter.py
import imptee
imptee.show()
imptee.foo = 1234
print ‘foo from impter‘, imptee.foo
imptee.show()

foo from imptee abc

foo from impter 1234

foo from imptee 1234

4. 模块的内建函数

  globals()和locals()分别返回调用者全局和局部名称空间的字典,

  reload()可以重新导入一个已经导入的模块,参数为模块自身

  

时间: 2024-08-03 15:00:12

12章模块的相关文章

JS读书笔记:《JavaScript框架设计》——第12章 异步处理

一.何为异步   执行任务的过程可以被分为发起和执行两个部分. 同步执行模式:任务发起后必须等待直到任务执行完成并返回结果后,才会执行下一个任务. 异步执行模式:任务发起后不等待任务执行完成,而是马上执行下一个任务,当任务执行完成时则会收到通知. 面对IO操作频繁的场景,异步执行模式可在同等的硬件资源条件下提供更大的并发处理能力,也就是更大的吞吐量. 但由于异步执行模式打破人们固有的思维方式,并且任务的发起和任务的执行是分离的,从而提高编程的复杂度. 多线程.多进程均可实现异步模式. 二.从回调

第 12 章 命令模式【Command Pattern】

以下内容出自:<<24种设计模式介绍与6大设计原则>> 今天讲命令模式,这个模式从名字上看就很简单,命令嘛,老大发命令,小兵执行就是了,确实是这个意思,但是更深化了,用模式来描述真是是世界的命令情况.正在看这本书的你,我猜测分为两类:已经工作的和没有工作的,先说没有工作的,那你为啥要看这本书,为了以后工作呗,只要你参见工作,你肯定会待在项目组,那今天我们就以项目组为例子来讲述命令模式. 我是我们部门的项目经理,就是一个项目的头,在中国做项目,项目经理就是什么都要懂,什么都要管,做好

第12章-Swing编程 --- 使用JFileChooser和Java7增强的JColorChooser

JColorChooser用于创建颜色选择器对话框,该类的用法非常简单,该类主要提供了如下两个静态方法: -->showDialog(Component component,String title,Color initialColor):显示一个模式的颜色选择器对话框,该方法返回用户所选的颜色.其中component指定该对话框的parent组件,而title指定该对话框的标题. -->createDialog(Component c,String title,boolean modal,J

读《构建之法》第11,12章有感

今天我读了<构建之法>的11,12章,其中第11章主要讲了软件的设计与实现的一些知识,告诉我们具体如何去开发一个软件.而第12章则为我们介绍了用户体验的相关知识,有些人认为用户界面的工作就是做一些优化,让界面更好看,而事实并不是这样,这一章就为我们做了详细的讲解. 我们写软件呢就是为了要解决用户的需求,而要解决用户的需求,就需要合适的方法:1.我们需要理解和抽象问题,将问题简化2.找到合适的模型3.最后按模型解决问题.而这其中分析和设计有许多方法:以文字为主的文档,如Word.PowerPoi

阅读10,11,12章

第10章 本章主要讲的是典型用户与场景,那么怎样定义典型用户? 答:(1)名字(越自然越好). (2)年龄(不同年龄和收入的用户有不同的需求). (3)收入. (4)代表的用户在市场上的比例和重要性(比例大不等同于重要性高,如付费的用户比例较少,但是影响大,所以更重要). (5)使用这个软件的典型场景. (6)使用本软件/服务的环境 (在办公室/家里/沙发/床上/公共汽车/地铁…). (7)生活/工作情况. (8)知识层次和能力(教育程度,对电脑.万维网的熟悉程度). (9)用户的动机.目的和困

第12章 代理模式(Proxy Pattern)

原文   第12章 代理模式(Proxy Pattern) 代理模式 概述: 在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切.这就是本文要说的Proxy模式. 结构图:     举例:       代练游戏,玩游戏,自己不想花时间去升级.委托给代练. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1

《构建之法》第11,12章读后感

第11章 软件设计与实现 1.  关于小飞拿到spec之后做的估计开发任务所需时间,他是根据以前同类任务所需花费的实际时间以及其他同事的时间估计的.以现阶段我们学生的角度,该如何估计一个项目开发所需时间呢? 2.  修改集是什么?集成是什么意思?怎么样才是集成呢? 3.  每日构建是什么意思呢? 每日构建意味着自动地,每天,完整地构建整个代码树.(译者按:"代码树",原文为source tree,        意思是将整个项目源代码的目录,子目录,文件的位置尽可能事先固定下来,这样在

MySQL性能调优与架构设计——第12章 可扩展设计的基本原则

第12章 可扩展设计的基本原则 前言: 随着信息量的飞速增加,硬件设备的发展已经慢慢的无法跟上应用系统对处理能力的要求了.此时,我们如何来解决系统对性能的要求?只有一个办法,那就是通过改造系统的架构体系,提升系统的扩展能力,通过组合多个低处理能力的硬件设备来达到一个高处理能力的系统,也就是说,我们必须进行可扩展设计.可扩展设计是一个非常复杂的系统工程,所涉及的各个方面非常的广泛,技术也较为复杂,可能还会带来很多其他方面的问题.但不管我们如何设计,不管遇到哪些问题,有些原则我们还是必须确保的.本章

公开课视频-《第11章 配置-Citrix-企业网盘-第12章 配置-UPM》

***************************************************************************************** <大企业云桌面部署实战>-培训班-即将开课,包学包会,欢迎咨询:3313395633(QQ) ***************************************************************************************** <大企业云桌面部署实战>-精讲课