可以实现for ...in 的都可以称为,可迭代对象,Iterable 可以使用isinstance(是什么实例嘛)来判断是不是可迭代对象 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator 可以使用isinstance(是什么实例嘛)来判断是不是迭代器(主要是可以使用next()计算出下一个值) 而列表啊,元组就不能计算出来.他们是直接就把数据放在里面了 生成器都是Iterator对象,但list.dict.str虽然是Iterable,却不是Iterator. 把…
面向对象编程,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 把老师分为一类,把学生分为一类.具体到某一个学生就是  这类中的一个具体对象,对象的 共同属性和方法可以定义在类中.特殊的可以自己额外添加.  类也可以额外添加属性和方法 在Python中,所有数据类型都可以视为对象,当然也可以自定义对象. 数据封装.继承和多态是面向对象的三大特点 私有属性,私有方法,在类外面禁止使用的.加上__只是修改了名字,其实在外面也可以使用. 给实例额外添…
可以使用for x in 数据 的那么 这个数据就是可迭代对象. 通过计算生成下一个值的数据就是生成器 可以使用next(数据) 来计算出下一个值的数据就是迭代器(生成器属于迭代器) -------------------------------------------------------------- 先说迭代: 在Python中,迭代是通过for ... in来完成的,能实现for  ....in的数据就是可迭代对象 使用isinstance 来判断他属不属于可迭代对象Iterable,…
参数化: import timeimport list1 #想测试list1中的求和函数是否正确fun1import paramunittestimport unittest #先设置参数组@paramunittest.parametrized( {'a':1,'b':1,'c':2}, #前两个是参数a,b,最后一个是真确值 {'a':1,'b':0,'c':1}, {'a':1,'b':0,'c':0} ) class Testfun(unittest.TestCase): def setP…
python是动态语言,可以随时随地给实例对象添加属性和方法,但是我们想限制属性的名字,可以使用__slots__特殊变量来限制 使用__slots__要注意,__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的.只有当前类中才有作用 @property 把方法变成属性一样方便的调用 -------------------多重继承 通过多重继承,一个子类就可以同时获得多个父类的所有功能. ------------------定制类() 增加一个__str__方法 直接输入c…
列表和元组 list1 = [1,4,6,788,345,757]            tuple1 =      (345,234,567,878)         切记你的变量名不能和  help('keywords')中的重名 列表是[]包起来list是一种有序的集合.你还可以随意改变他的值. list1[0] = "fan" 想知道list怎么使用:help(list),一起皆对象 项目中无非就是对数据的增删改查,所以学list就是要学增删改查 python中自带的方法可以使…
python的语法主要就是严格的缩进.一般缩进都是四个空格.以冒号结尾的(:)就意味着他后面有代码块.(js代码块使用{}抱起来的,我记得c语言也是,但是python就不需要,他只要严格缩进的就可以了) python中的数:整数和浮点数(小数):整数的运算永远是精确地,小数运算可能会有四舍五入的误差.整数和浮点数在计算机内部存储的方式是不同的. 计算: 1/1 = 1.0(除法的运算结果是浮点数) 1//1 = 1  (//表示整除,整数整除结果是整数) 2.0//1.0 = 2.0 (浮点数整…
总是优先使用isinstance()判断类型,可以将指定类型及其子类“一网打尽”. 如果要获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list,比如,获得一个str对象的所有属性和方法: 类似__xxx__的属性和方法在Python中都是有特殊用途的,比如__len__方法返回长度.在Python中,如果你调用len()函数试图获取一个对象的长度,实际上,在len()函数内部,它自动去调用该对象的__len__()方法 仅仅把属性和方法列出来是不够的,配合geta…
在Python中,一个.py文件就称之为一个模块(Module) 可以作为module的文件类型有".py".".pyo".".pyc".".pyd".".so".".dll". (要导入模块的时候,该模块会生生成一个同名的pyc文件.pyc文件是py文件预编译的文件,是二进制字节码文件,提高加载的速度.如果是商用代码,就需要先编译成pyc.文件主要是不想把源代码暴露出来.) impor…
当函数很简单的时候采用匿名函数很方便.…
把复杂的任务拆成各个小的函数,通过函数的调用来完成任务.这就是面向过程编程. 高阶函数:就是让函数的参数能够接收别的函数.把函数作为参数传入到另一个函数. 函数名也是变量.和变量用法一样的,指向一个函数内存 Python自带的高阶函数.(我怎么感觉这个部分都写过了,我一般在路上看,晚上回来写) Python内建的filter()函数用于过滤序列. 好好说说sorted 除了把函数作为参数传入另个一函数,也可以把函数作为返回值返回 闭包:当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,…
函数就是将你的代码封装起来,可以重复利用.不需要每次就写重复的代码 def 函数名(位置参数,默认参数=10,可变参数,关键字参数): 代码块 return 值 定义函数时,需要确定函数名和参数个数: 如果有必要,可以先对参数的数据类型做检查: 函数体内部可以用return随时返回函数结果: 函数执行完毕也没有return语句时,自动return None. 函数可以同时返回多个值,但其实就是一个tuple. 位置参数和默认参数: 可变是关键的:…
字典:以键值对的形式存储数据.他就像字典一样,你可以查偏旁,直接跳到500页找到你想要的数据.但是列表就是从第一页开始一个一个的找,找到500页需要的时间很多. 所以字典就是查找速度快,但是所需要的空间大.这种就是用空间来换取时间的方式.. 字典里的键必须独一无二,牢记的第一条就是dict的key必须是不可变对象. d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} 字典就是用来存放一类, d = {'FirstName': "fan", 'Last…
因为Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 要开始学习Python编程,首先要把Python安装到电脑里.安装后,可以得到Python解释器(就是负责运行Python程序的),一个命令行交互环境,还有一个简单的集成开发环境. 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的.由于3.x版越来越普及,廖老师的教程将以最新的Python 3.7…
一直想了解下Python,今儿在外面办事排队的时候,打开了廖老师的官网,找到了Python教程.虽然只是一篇关于Python的简介,但是通过将Python的特性与C进行对比,很生动地归纳了Python的一些特性.因为之前花过时间学习C,所以能够很容易地体会Python的特性.上学期通过廖老师的教程顺利掌握了Git,所以再次遇到廖老师的教程,忍不住要收藏一下.会在廖老师的教程中用红色字体插入批注或对知识点进行标识. 首先,普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,…
在学习廖老师git教程之多人协作模块时按照老师的操作先创建了另一个目录,然后在这个目录下从GitHub上clone了 learngit目录到这个目录下,同样的执行了git branch查看分支情况,确实是只有master,然后执行:git checkout -b dev origin/dev命令之后就报出了:"fatal: Cannot update paths and switch to branch 'dev' at the same time. Did you intend to chec…
先来学习一个新词:高阶函数 高阶函数英文叫Higher-order function.那么什么是高阶函数? JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数. 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个对象呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出…
<Head first设计模式>学习笔记 – 迭代器模式 代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 爆炸性新闻:对象村餐厅和对象村煎饼屋合并了!真是个好消息!现在我们可以在同一个地方,享用煎饼屋美味的煎饼早餐,和好吃的餐厅午餐了.但是,好像有一点小麻烦:新的餐厅想用煎饼屋菜单当作早餐的菜单,使用餐厅的菜单当做午餐的菜单,大家都同意了这样实现菜单项.但是大家无法同意菜单的实现.煎饼屋使用ArrayList记录他的菜单项,而餐厅使用的是数组.他们两个都不愿意改…
python 迭代器 要理解python迭代器(iterator),先要理解两个概念:Iterable(可迭代对象).Iterator(迭代器) 先来help()一下Iterator: >>> help(Iterator) Help on class Iterator in module collections.abc: class Iterator(Iterable) | Method resolution order: | Iterator | Iterable | builtins…
迭代 使用一个循环来遍历某个东西时这个过程本身叫做迭代. 可迭代对象 python中只要定义了可以返回一个迭代器的__iter__方法,或者定义了可以支持下标索引的__getitem__方法,那么它就是一个可迭代对象. 迭代器----一个可以记住遍历的位置的对象 迭代器对象从第一个元素开始向前访问直到所有的元素被访问完结束. 迭代器的两个基本方法 1.iter()用来生成迭代器 语法: iter(object[, sentinel]) 参数: object -- 支持迭代的集合对象. senti…
我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的generator function. 这些可以直接作用于for循环的对象统称为可迭代对象:Iterable. 可以使用isinstance()判断一个对象是否是Iterable对象: >>> from collections import Iterable >>> isinstanc…
1.手动遍历迭代器 使用next函数,并捕获StopIteration异常. def manual_iter(): with open('./test.py') as f: try: while True: line = next(f) print line except StopIteration: pass next函数也可以指定值来标记结尾 def manual_iter(): with open('./test.py') as f: try: while True: line = nex…
#python3.7 内置函数整理 #abs(x) #返回数字的绝对值. 参数可以是整数或浮点数. 如果参数是复数,则返回其大小 # print(abs(1)) # print(abs(-1)) # print(abs(-1.234)) # 1 # 1 # 1.234 #all(iterable) #如果一个iterable(可迭代对象)的所有元素都为true(或者iterable为空),则返回True. # a = all([1]) # b = all([]) # c = all([1,[],…
[CSS简介.基础选择器.字体属性.文本属性.引入方式]前端小抄(2) 本学习笔记是个人对 Pink 老师课程的总结归纳,转载请注明出处! 一.CSS简介 CSS 的主要使用场景就是布局网页,美化页面的. 1.1 HTML的局限性 HTML 只关注内容的语义,虽然 HTML 可以做简单的样式,但是带来的是无尽的臃肿和繁琐-- 1.2 CSS网页的美容师 CSS 是 层叠样式表 的简称. 有时我们也会称之为 CSS 样式表 或 级联样式表. CSS 也是一种 标记语言. CSS 主要用于设置 HT…
[CSS复合选择器.元素显示模式.背景]前端小抄(3) 本学习笔记是个人对 Pink 老师课程的总结归纳,转载请注明出处! 一.CSS的复合选择器 1.1 什么是复合选择器 在 CSS 中,可以根据选择器的类型把选择器分为:基础选择器 和 复合选择器,复合选择器是建立在基础选择器之上,对基础选择器进行组合形成的. 复合选择器可以更准确.更高效的选择目标元素(标签) 复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的 常用的复合选择器包括:后代选择器.子选择器.并集选择器.伪类选择器等…
初识装饰器(decorator ) Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数. 使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码. 先看一个例子: #!/usr/bin/env python def outer(func): print('这是outer.') def inner(): print('这是inner.') func() print('这是最后.…
迭代器模式,使用很多,但是很少实现.常用的集合都支持迭代器. 集合中的CreateIterator()可用于创建自己的迭代器,在里面通过调用迭代器的构造函数Iterator(Aggregate)来绑定自己到迭代器中,如果不使用此方法,也可以在场景中直接new Iterator(Aggregate)来得到一个迭代器.迭代器中的接口First()等其实本质都是操作引用的Aggregate对象实现的.好处在于不用集合自己来写迭代方法,一是可以复用迭代器,减少每种集合都去造轮子,二是看起减少了集合的接口…
什么是迭代器模式? 迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示. 何时使用迭代器模式? 当需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,需要考虑使用迭代器模式. 迭代器模式的组成 Iterator():迭代器抽象类,用于定义得到开始对象,对到下一个对象,判断是否到结尾,当前对象等抽象方法,统一接口. ConcreteAggregate():保存聚合对象. ConcreteIterator():继承于Iterator,实现…
iostream迭代器 1.虽然iostream类不是容器,但是标准库定义了可以用于IO的迭代器.创建一个流迭代器的时候必须指定要读写的类型.我们可以对任何具有输入运算符(>>)的类型定义ostream_iterator. std::istream_iterator<int> iter_eof; // 尾后迭代器 std::istream_iterator<int> iter_in(std::cin); // 从cin读取int std::vector<int&g…