《零基础入门学习Python》学习笔记(26-51)

参考:http://edu.csdn.net/course/detail/906/12820?auto_start=1

论坛:http://bbs.fishc.com/forum-243-1.html

26 集合:在我的世界里,你就是唯一

集合与字典的区别:集合中的数字没有体现映射关系,而字典中都有映射,键和值一一对应

如 num ={1,2,3,4,5} 就表示一个集合,同字典一样,集合中的元素也是无序的,不支持通过序号来索引

创建集合的方法:一种是直接用花括号括起来创建,如上num所示,另一种方法是采用set工厂函数,num = set([1,2,3,4,5,5]),注意创建后的集合会自动剔除掉重复的5

可通过add和remove来增加或删除集合中的元素

不可变集合:frozenset()定义的集合为不可变集合,不能使用add和remove来添加删除元素

27 文件:因为懂你,所以永恒

打开文件:open(file,model)参数包括文件名、打开的格式,如f = open('E:\\record.txt'),如果是在同一目录下可以不加路径


文件对象的方法(打开文件后的操作方法)


28 文件:一个任务

29 文件系统:介绍一个高大上的东西

http://bbs.fishc.com/forum.php?mod=viewthread&tid=45512&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403

模块:是一个包含所有你定义的函数和变量的文件,其后缀是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。

python是跨平台语言,同样的代码可以在不同的操作系统执行,因此python的作者就倒腾了OS模块这么一个玩意儿出来,有了OS模块,我们不需要关心操作系统下使用什么模块,OS模块会帮你选择正确的模块并调用



30 永久存储:腌制一缸美味的泡菜

pickle模块,用二进制的文件永久保存不同种类的数据,写到磁盘当中

31 异常处理:你不可能总是对的01

python标准异常总结

http://bbs.fishc.com/forum.php?mod=viewthread&tid=45814&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403

32 异常处理:你不可能总是对的02

方法1

try:

   检测范围

except Exception[as reason]:

   出现异常(exception)后的处理代码

这种方法只能关注特定的error,如果不知道error类型,就无法使用这种方法

方法2

try:

    检测范围

except Exception [as reason]:

    出现异常(exception)后的处理代码

finally:

    无论如何都会被执行的代码

33 丰富的else语句及简洁的with语句

with语句会自动关闭文件,不用每次都手动关闭

34 图形用户界面入门:EasyGui

http://bbs.fishc.com/forum.php?mod=viewthread&tid=46069&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403

35 类和对象:给大家介绍对象

对象= 属性 + 方法

静态特征称为属性,动态特征称为方法

变量是属性,函数是方法

变量和函数可以定义一个类,类名约定以大写字母开头,如class Turtle:

函数名是以小写字母开头,这样可以区分开来

面向对象编程的特征:封装(信息隐蔽技术,只需要知道方法的名字就行)、继承(子类自动共享父类之间数据和方法的机制 )、多态(不同类可以有同样的函数名,但可以有不同的作用)

如class Mylist(list):     表示类Mylist继承list的特点

36 类和对象:面向对象编程

在方法中定义函数第一个默认参数self,self是什么:Python的self相当于C++的this指针

Python的魔法方法:__init__(self)

公有和私有:在Python中定义私有变量只需要在变量名或函数名前加上两个下划线,那么这个函数或变量就会变为私有的了。私有变量只能在内部访问,不能通过继承的方法调用

但事实上可以通过_类名__变量名来访问的

37 类和对象:继承

子类可以继承父类的任何属性和方法

类名后边括号里的东西就是父类:如果子类中定义了与父类同名的方法或属性,则会自动覆盖父类对应的方法或属性(按照子类的方法和属性输出)

如果子类重写了父类的方法,如__init__(self),则不能继承父类的方法

调用未绑定的父类方法

使用super函数,可以自动找到基类

多重继承:同时继承多个父类的方法和属性,只需要在括号中把父类的名称依次写上就可以,但容易代码混乱,应尽量避免使用

38 类和对象:拾遗

组合:把几个不同的类放在一起,没有继承关系

类、类对象和实例对象:

当属性名字和方法名字相同,属性会覆盖掉方法,因此需遵守一些约定俗称的规定:不要试图在一个类里边定义出所有能想到的特性和方法,应该利用继承和组合机制来进行扩展。用不同的词性命名,如属性名用名词,方法名用动词。

到底什么是绑定:Python严格要求方法需要有实例才能被调用,这种限制其实就是Python所谓的绑定概念。 

39 类和对象:一些相关的BIF

issubclass(class,classinfo):如果class是classinfo的子类,则返回True。一个类被认为是自身的子类;classinfo可以是类对象组成的元祖,只要class与其中一个候选类的子类,则返回True

所有类默认集成object

isinstance(object,classinfo)检查一个实例对象object是否属于一个类classinfo,如果第一个参数不是对象,则永远返回False

hasattr(object,name)测试对象里边是否有特定的属性

getattr(object,name[,default]):多了一个默认值,返回指定对象属性值

setattr(object,name,value)设定对象中指定属性的值,如果指定属性不存在,会新建一个新的属性,并给赋值

delattr(object,name)删除对象中指定的属性

property(gget = None, fset = None, fdel = None, doc = None),通过属性来设置属性

40 魔法方法:构造和析构

http://bbs.fishc.com/forum.php?mod=viewthread&tid=48793&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403

魔法方法总是被双下划綫包围,如__init__

魔法方法是面向对象的Python的一切,如果不知道魔法方法,则说明还没有意识到面向对象的Python的强大

魔法方法的魔力体现在它们总能够在适当的时候被自动调用

__init__(self[,...]):相当于定义类的输入变量有哪些,init的返回一定是none,不能设置返回一个其他值,

__new__(cls[,...]):类在实例化的时候第一个调用的方法,需要一个实例对象作为返回值

__del__(self):是当垃圾回收机制,并不是发生del就会被调用

41 魔法方法:算术运算(上)

42 魔法方法:算术运算(下)

魔法方法相当于自带的函数,但是可以通过定义的方法来重置魔法方法,相当于在上帝的角度修改函数

魔法方法是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被Python所调用,你可以定义自己想要的行为,而这一切都是自动发生的。

 

43 魔法方法:简单定制

使用time模块的localtime方法获取时间

http://bbs.fishc.com/forum.php?mod=viewthread&tid=51326&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403


类的属性和方法名一样时,属性会覆盖方法,而属性是不能被调用的

44 属性访问

__getattr__(self,name) 定义当用户试图获取一个不存在的属性时的行为

__getattribute__(self,name) 定义当该类的属性被访问时的行为

__setattr__(self,name,value) 定义当一个属性被设置时的行为

__delattr__(self.name) 定义当一个属性被删除时的行为

45 魔法方法:描述符(property的原理)

描述符:就是将某种特殊类型的类的实例指派给另一个类的属性

__get__(self,instance,owner) 用于访问属性,它返回属性的值

__set__(self,instance,value) 将在属性分配操作中调用,不返回任何内容

__delete__(self,instance) 控制删除操作,不返回任何内容

46 魔法方法:定制序列

协议:与其他编程语言中的接口很相似,它规定你哪些方法必须要定义,然而,在Python中的协议就显得不那么正式,事实上,在Python中,协议更像是一种指南

容器类型的协议:如果希望定制的容器是不可变的话,只需要定义__len__()和__getitem__()方法;如果希望定制的容器是可变的话,除了__len__()和__getitem__()方法,还需要定义__setitem__()和__delitem__()两个方法


47 魔法方法:迭代器

iter()

next()

48 乱入:生成器

http://bbs.fishc.com/forum.php?mod=viewthread&tid=56023&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403

生成器可以实现在程序中的暂停,所谓的协同程序就是可以运行的独立函数调用,函数可以暂停或者挂起,并在需要的时候从程序离开的地方继续或者重新开始

函数中出现yield表示是一个生成器,类似于return语句的功能,但是可以在yield处暂停,用next()方法可以执行下一条语句

列表推导式

字典推导式

集合推导式

生成器推导式

49 模块:模块就是程序

容器是数据的封装,函数是语句的封装,类是方法和属性的封装,模块就是程序

导入模块:(1)import 模块名  (2)from 模块名 import 函数名 (3)import 模块名 as 新名字

50 模块:__name__='__main__'、搜索路径和包

模块的作用:封装组织Python的代码、实现代码的重用

if __name__ == '__main__'  可以用来区分主程序与导入程序,当作为调用程序的时候,就不执行__main__下方的程序

搜索路径:路径是一个列表,可以在sys.path.append()添加自己文件的路径,这样导入的时候就不会出错

包(package):创建一个文件夹,用于存放相关的模块,文件夹的名字就是包的名字;在文件夹中创建一个__init__.py的文件,内容可以为空;将相关的文件放入包中。

导入包的方法:import 包名.函数

51 模块:像个极客一样去思考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宗而研之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值