Python: First G limpse
初学Python,做了写笔记,于是分享之。
对 C++ 程序员来说,第一个新颖有趣的地方是什么?
for循环
for 有什么不一样?
for…in遍历sequence中的元素
sequence 是什么呢?
1. tuple: 圆括号()
2. list: 方括号[]
3. generator:相对于没有中括号的list,每次产生一个iterator
generator 是什么?
使用yield抛出iterator的function返回值类型为generator
1. 在函数中使用yield 用来抛出iterator
2. 从底层来看,相当于自动化生成了 next() 函数,并保存对象状态
举例:
l sum(i*i for i in range(10))
l set(word for line in page for word in line.split())
l list(data for i in range(len (data)-1,-1,-1))
l (i *i for i in a if i >3)
l 可以理解成:没有中括号的列表
通常yield和外部的for搭配着使用
举例:
¡ def reverse(data):
¡ for index in range(len(data)-1,-1,-1):
¡ yield data[index]
¡ for char in reverse("golf"): print char,
列表推导式是什么?
即利用for + sequence来产生列表的一种方法。
例如:
[3*x for x in vec if x>3]
其余的部分呢?
请查看python绝对简明教程
http://wiki.woodpecker.org.cn/moin/PyAbsolutelyZipManual
函数式编程与数据为中心
函数式编程的最重要的概念是什么呢?
1. sequence:体现着数据为中心
2. 函数
a) 匿名函数,lambda函数
b) 函数对象,闭包
为什么说sequence是重要的概念?
1. 且看map函数:map(function,sequence,[sequence...])
2. 再看reduce函数:reduce:reduce(function,sequence,[init])
3. 最后看filter函数:filter(function,sequence)
这里所有的数据都是放在sequence中的,sequence相当于所有数据的通用容器。这也是数据为中心的体现。
而函数就直接通过map,reduce,filter作用在数据上,而弱化具体的控制流。
与数据为中心相对应的概念是什么?
以数据为中心,关注点在数据( sequence ) 以及操作( 函数 对象)
与之对应:
面向过程的程序设计,关注点在控制流 。
面向对象的程序设计,关注点在微系统实体的建模 。
以数据为中心 ,我们就要弱化对控制流的关注。
把控制流以及算法 封装在函数对象内部。
这里也插一个题外话,GNU linux的设计思想,在shell层面,也是以数据为中心。
GNU小工具 ——》 函数对象
pipe,字符流,文件流 ——》 sequence
这样具体的算法和控制流,就被封装在GNU似的小工具中。
数据通过pipe,字符流,文件流,被GNU小工具转换着。
类型与对象
万物皆对象 这不是扯么?
这里的对象其实没有几个,请看下图
(出处:http://wiki.woodpecker.org.cn/moin/PyTypesAndObjects)
对象也就 两 种 :(说万物皆对象,是聪明人在忽悠人,逃避问题。)
1. type对象(经type()函数返回的对象)
a) 图中第一,二列
2. non-type对象(经type()函数返回types对象(例如list)的对象)
a) 图中第三列
图中两种线:
1. “是——的类” ( 图中实线 )
a) 由继承关系括号指定
b) 由__bases__查看
c) 只有类对象才有__bases__属性
2. “是——的实例”( 图中虚线 )
a) 由__metaclass__指定
b) 由__class__查看
如果让我来定义一个 新的 type 对象 :
class mylist(object):
__metaclass__ = type
题外话
function对象(经type()函数返回
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com