python参考手册--第4、5、6、7章
1.zip
zip(s,t):将序列组合为一个元组序列[(s[0],t[0]), (s[1],t[1]), (s[2],t[2]), (s[3],t[3]),...]
>>> s = [1,2,3,4,5,6]
>>> t = ['a','b','c','d','e','e']
>>> zip(s,t)
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'), (6, 'e')]
2.assert,__debug__()
assert 、__debug__()用于调试
3.作用域
解析名称时首先检查局部作用域,然后由内向外检查外部嵌套函数定义的作用域,找不到再搜索全局名称和内置命名空间。
python3中可以使用nonlocal var,将var绑定到外部嵌套函数中定义的变量。建议还是通过参数传进来吧。以兼容python2.
可以通过闭包嵌套实现延迟求值或惰性求值:
>>> from urllib import urlopen
>>> def page(url):
def get():
return urlopen(url).open()
return get
>>> baidu = page('www.baidu.com')
>>> baiduData = baidu()
4.装饰器
用于增强类或者方法:
@foo
@bar
def func(x):
pass
等价于
def func(x):
pass
func = foo(bar(func))
装饰器可以带参数:
@bar(x)
5.列表推导及生成器表达式
(1)列表推导
>>> a = [1,3,4,5,6,7,8]
>>> b = [2*s for s in a]
>>> b
[2, 6, 8, 10, 12, 14, 16]
(2)生成器表达式
>>> a = [1,3,4,5,6,7,8]
>>> b = (10*s for s in a)
>>> b
<generator object <genexpr> at 0x02DAC170>
>>> b.next()
10
>>> b.next()
30
列表推导与生成器表达式区别:前者创建了包含结果数据的列表,后者只知道如何安装需要生成数据的生成器,内存分配有需要再分配。类似于range(n)与xrange(n)的区别。
6.lambda表达式
lambda语句用于创建表达式形式的匿名函数。
>>> a = lambda x,y: x+y
>>> r = a(4,6)
>>> r
10
7.compile、exec、eval
compile将字符串编译成代码对象(语句)或者表达式,exec执行代码对象(语句),eval执行表达式
>>> s = "for i in range(0,10): print(i)"
>>> c = compile(s,'','exec')
>>> exec(c)
0
1
2
3
4
5
6
7
8
9
>>> x = 10
>>> y = 100
>>> t = '3*x + 4*y'
>>> b = compile(t,'','eval')
>>> result = eval(b)
>>> result
430
8.类中self
类会定义命名空间,但是不会为在方法体内使用的名称限定范围,所以在实现类时,对属性和方法引用必须用self限定。
9.类的多继承
class Derived(Base1,Base2,Base3)
这点与java不一样,java中不能多继承,只能通过接口实现。
10.动态绑定和鸭子类型
动态绑定:类属性查找顺序,实例本身内部-》实例的类定义-》基类的类定义。
这种查找模式是:鸭子类型(duck typing):如果看起来像、叫声像而且走起路来像鸭子,那么他就是鸭子。
这点与java不一样,java中不能多继承,只能通过接口实现。
11.staticmethod、property
@staticmethod:静态方法(装饰器)。
@property:特性(装饰器),实现以属性的方式访问该装饰器修饰的方法。实质是通过get、set、delete方法来进行访问。
12.抽象基类
python中创建抽象基类,需要使用abc模块,该模块定义了一个元类:ABCMeta和一组装饰器(@abstractmethod和@abstractproperty)
>>> from abc import ABCMeta, abstractmethod, abstractproperty
>>> class Foo:
__metaclass__ = ABCMeta
@abstractmethod
def spam(self,a,b):
pass
@abstractproperty
def name(self):
pass
抽象基类不能实例化。
13.元类
显示的指定其元类:__metaclass__ = ABCMeta
如果不显示的指定,则默认元类为:types.ClassType
14.类装饰器
类装饰器是一个函数,他以类作为输入,类作为输出
python参考手册--第4、5、6、7章的更多相关文章
- 《python参考手册(第四版)》【PDF】下载
<python参考手册(第四版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382222 内容介绍 本书是权威的Python语 ...
- python参考手册--第1章python简介
1.if __name__ == '__main__': 直接运行myModel.py时,当前模块的名字是main:import myModel然后运行的时候当前模块的名字是myModel. 2.ev ...
- python参考手册--第9章
1.读取命令行选项 (1)sys.args python启动时,命令行选项设置在列表sys.args中. sys.args[0]:xxx.py sys.args[1:]: 其他参数 (2)optpar ...
- python参考手册--第8章
1.模块和import (1)首次import module会做以下3件事: a)创建新的命名空间,用作在该源文件中定义的所有对象的容器.在模块中定义的函数和方法在使用global语句时将访问该命名空 ...
- python参考手册--第2章词汇和语法约定
1.续行符\ 三引号.().{}.[]中的内容不需要续行符 2.空格缩进 优选空格作为缩进,不要用tab,这是因为不同操作系统下tab对应的空格不一样,而python是通过严格的空格来控制语句块的. ...
- python参考手册 Read
P28 复制 a = [1,2,3,[1,2]] b = a b is a # True c = list[a] # shallow copy c is a # False c[3][0] = 100 ...
- python参考手册--第10、11章执行环境、调试
1.解释器选项和环境 python [options] [-c cmd | filename | - ] [args] 例如:python -m pdb test.py 以脚本的形式运行库模块pdb ...
- python参考手册一书笔记之第一篇上
在python2和python3的版本差异很大输出hello world的方法在2里支持在3里就不支持了. print 'hello world' #在2中支持 print ('hello world ...
- python参考手册--第3章类型和对象
1.对象的身份.类型.值 (1)身份:对象在内存中位置的指针,地址值, >>> a = [1,2,3,4,5] >>> id(a)48497328 >> ...
随机推荐
- Memcached 安装配置
安装: memcached -d install memcached -d start net start "Memcached Server" 卸载: memcached -d ...
- 承接VR/AR内容应用定制需求
业务范围: 1 承接VR/AR内容应用定制需求: 教育培训.建筑建设.旅游体验.课件教学系统.交通车辆仿真,模拟驾驶系统.游戏等.2 各类最新VR设备,例如GearVR.HTC vive.Oculus ...
- 对C#调用C++ dll文件进行总结
在实际项目工作中,经常用到C#调用C++ 或者C编写的dll文件. dll支持一般函数声明和类的定义声明,但是一般为了简化,都是 采用函数声明的方式.这里主要并不是写 dll的编写. 先在vs中创建一 ...
- Mysql数据库迁移 Ubuntu14.04
1. 停止数据库服务 sudo service mysql stop 2. 创建数据迁移目标文件夹(实际应该是挂载到新硬盘上) cd /var/lib ls -l drwx------ 6 mysq ...
- DigitalOcean(DO)购买VPS流程
背景: 对于一个程序员来说,拥有自己的一台国外服务器是一种多么激动的事情,尽管配置不如自己电脑的1/5,但是想一想可以不用备案搭建网站,可以搭建shadow服务器,从此通过自己的服务器上网,想一想真是 ...
- mysql---用户管理
#创建用户king , 登陆密码为1234 create user 'king' identified by '1234'; #查看创建用户的语句,即上面那条创建用户的语句 show grants f ...
- DataGridView显示时间格式
默认显示时间不显示秒yyyy-MM-dd HH:mm dataGridView.Columns["日期时间字段"].DefaultCellStyle.Format = " ...
- js给数字加三位一逗号间隔的两种方法(面试题)
方法一: <script type= "text/javascript"> //保留三位小数,toLocaleString() 方法可把一个 Number 对象转换 ...
- net发布mvc项目
1.复制 Web 文件夹 2.复制 DLL 文件C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies C ...
- phpcms v9 打开网站特别慢 增加数据库缓存方法
SET GLOBAL QUERY_CACHE_SIZE=80000000; 设置好查询缓存的大小就行了.比如设置个20MB.SET GLOBAL QUERY_CACHE_SIZE=20000000; ...