python学习手册笔记--第21~24章
来源:互联网 发布:js获取元素name属性值 编辑:程序博客网 时间:2024/05/17 08:33
第21~22章 模块及模块的编写
以保留字命名的.py不能导入
from module1 import * 顶层所有赋值的拷贝
import和from都是赋值语句,可以放在if中
说明:
1.模块语句会在首次导入时执行
2.顶层赋值语句会创建模块属性
3.模块的命名空间能通过属性__dict__或dir(M)获取
4.模块是一个独立的作用域(本地变量就是全局变量)
第23章 模块包
import dir1.dir2.mod 会自动运行dir1,dir2下的__init__.py文件6
from dir1.dir2.mod import x
dir1和dir2目录下必须有__init__.py文件,可以为空
扮演初始化钩子,替目录产生模块命名空间,以及使导入目录实现from *
__all__指利用from *,应导入的模块清单
from . import ** 会忽略sys.path上的路径
from .. import ** 导入父目录下的
相对导入只适用于from语句
文件中写import **在2.6中是相对的,在3.0中是绝对的,因此,应写成from . import **
3.0中不能略过导入包的主目录 import a.** a下的文件依然可见
第24章 高级模块话题
最小化from *的破坏:_X和__all__=['','',……]
_X:变量将不会被复制 __al__:将只复制__all__列表中的变量
启用以后的语言特性: from __future__ import featurename
__name__和__main__: 写在模块最后,自我检测
模块运行时,__name__==__main__ 模块导入时,__name__==相应的文件名
sys.argv包含了命令行参数
import from都可以用as扩展,作为别名
M.name M.__dict__['name'] sys.modules['M'].name getattr(M,'name')
以上都会得到模块M的name变量
exec函数:编译一个代码字符串,并且将其传给python解释器以执行
以字符串方式导入: modname="string" exec("import " + modname)
modname="string" string=__import__(modname)
当reload模块时,必须把每个模块都reload,可以通过递归实现
递归遍历所有__dict__.values()中ModuleType类型的模块名,实现过渡性重载工具
from 复制变量名,而不是连接
#nested1.py x=99 def printer():print(x)
#nested2.py from nested1 import x, printer
x=88 修改是复制的 x only
printer()>>> 99
from module import x; reload(module); 此时x依然为原来的x
避免这个陷阱可以通过 import及.运算来解决
不要在递归导入中使用from 否则会陷入死循环
以保留字命名的.py不能导入
from module1 import * 顶层所有赋值的拷贝
import和from都是赋值语句,可以放在if中
说明:
1.模块语句会在首次导入时执行
2.顶层赋值语句会创建模块属性
3.模块的命名空间能通过属性__dict__或dir(M)获取
4.模块是一个独立的作用域(本地变量就是全局变量)
第23章 模块包
import dir1.dir2.mod 会自动运行dir1,dir2下的__init__.py文件6
from dir1.dir2.mod import x
dir1和dir2目录下必须有__init__.py文件,可以为空
扮演初始化钩子,替目录产生模块命名空间,以及使导入目录实现from *
__all__指利用from *,应导入的模块清单
from . import ** 会忽略sys.path上的路径
from .. import ** 导入父目录下的
相对导入只适用于from语句
文件中写import **在2.6中是相对的,在3.0中是绝对的,因此,应写成from . import **
3.0中不能略过导入包的主目录 import a.** a下的文件依然可见
第24章 高级模块话题
最小化from *的破坏:_X和__all__=['','',……]
_X:变量将不会被复制 __al__:将只复制__all__列表中的变量
启用以后的语言特性: from __future__ import featurename
__name__和__main__: 写在模块最后,自我检测
模块运行时,__name__==__main__ 模块导入时,__name__==相应的文件名
sys.argv包含了命令行参数
import from都可以用as扩展,作为别名
M.name M.__dict__['name'] sys.modules['M'].name getattr(M,'name')
以上都会得到模块M的name变量
exec函数:编译一个代码字符串,并且将其传给python解释器以执行
以字符串方式导入: modname="string" exec("import " + modname)
modname="string" string=__import__(modname)
当reload模块时,必须把每个模块都reload,可以通过递归实现
递归遍历所有__dict__.values()中ModuleType类型的模块名,实现过渡性重载工具
from 复制变量名,而不是连接
#nested1.py x=99 def printer():print(x)
#nested2.py from nested1 import x, printer
x=88 修改是复制的 x only
printer()>>> 99
from module import x; reload(module); 此时x依然为原来的x
避免这个陷阱可以通过 import及.运算来解决
不要在递归导入中使用from 否则会陷入死循环
- python学习手册笔记--第21~24章
- 《Python学习手册》学习笔记——第4章
- 《Python学习手册》学习笔记——第5章
- python学习手册笔记--第4章--对象类型
- python学习手册笔记--第7章--字符串
- python学习手册笔记--第8章--列表与字典
- python学习手册笔记--第12~13,15章
- python学习手册笔记--第14.20章--迭代器和解析
- python学习手册笔记--第16~19章--function_base
- python学习手册笔记--第25,28,30,32章
- 《Python学习手册》学习笔记(21)之第21章模块:宏伟蓝图(关键词:编程语言/Python/模块)
- python学习手册笔记--第5章--数字--第6章--动态类型
- 《python学习手册》第4章总结
- python学习手册 第6章
- python学习手册 第7章 字符串
- Python学习手册笔记
- python学习手册笔记
- 《Python学习手册》学习笔记(2)之第2章Python如何运行程序(关键词:编程语言/Python)
- python学习手册笔记--第16~19章--function_base
- Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析
- xslt 转换例子
- 关于Excel Spreadsheet 对象的方法的定义
- 没有连接上aspnetdb.mdf数据库
- python学习手册笔记--第21~24章
- 信息安全走向漫谈(一)
- 关于Excel Spreadsheet 对象的事件的定义
- python学习手册笔记--第25,28,30,32章
- 信息安全走向漫谈(二)
- MySQL数据库常用命令
- 信息安全走向漫谈(三)
- WP7弹出控件的使用
- 信息安全走向漫谈(四)