《零基础入门学习Python》学习笔记4

学习网址:http://edu.csdn.net/course/play/906/12818

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

20 lambda表达式

>>> def ds(x):
    return 2*x+1

>>> ds(2)
5
>>> g=lambda x: 2*x+1
>>> g(2)
5           #用lambde表达式省略了函数定义的过程,更加简单。

>>> list(filter(lambda x: x%2,range(10)))
[1, 3, 5, 7, 9]                         #filter()函数:将所有0和false的元素过滤掉。

>>> list(map(lambda x: x*2,range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]     #map()函数的作用是将后面的每一个元素放入前面定义的函数中计算。

21-23 递归是什么

递归:函数自己调用自己。注意一定要有一个终止的条件,否则会无限循环下去。

24-25 字典

字典:实际是一种映射类型,不属于列表。用大括号表示字典{}。

格式:>>> dict1={'a':'A', 'b':'B', 'c':'C'}

dict:工厂函数,实际上是一种类型,与int,str比较类似。调用它可以生成一个字典。

fromkeys():创建字典的函数。它有两个参数,第二个参数如果不给默认是none,如下。

>>> dict1={}
>>> dict1.fromkeys((1,2,3))
{1: None, 2: None, 3: None}
>>> dict1.fromkeys((1,2,3),'number')
{1: 'number', 2: 'number', 3: 'number'}
keys:返回字典键的引用。value:返回值的引用。items:返回每一个对象。

clear:清除字典;copy:复制,与赋值不一样。前者是复制值,地址不同,后者指向同一地址。

dir():查看对象内所有属于及方法。

update:用映射关系去更新字典。

26 集合(set)

与字典的符号相同,都是{}。没有映射关系的{}就是集合。

集合里面所有的元素都是唯一的,集合是无序的。

创建集合的两种方法,一种是使用{}将数据括起来,第二种是使用set()工厂函数。

frozenset()不可变集合。

27-29 文件

open(打开文件名,打开方式),打开文件命令。读取完要用f.close()关闭文件,防止内存泄露问题。

os模块:Python是跨平台语言,os模块解决了不同操作系统下选择相应的模块问题。

30永久存储(泡菜pickle)

把所有对象转换成二进制的形式存放。

pickle.dump(文件名,数据)将数据以二进制形式储存在文件中。

31-32异常处理

Python标准异常总结网址:http://bbs.fishc.com/forum.php?mod=viewthread&tid=45814&highlight=%D2%EC%B3%A3

用try语句来检测异常,except处理异常。一旦检测到错误,错误代码后面的内容都不会被执行,直接跳到错误处理那一句,但是finally后的语句无论如何都会被执行。

>>> try:
    #检测范围
    except Exception[as reason]:

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

    finally:

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

33 丰富的else语句和with语句

else语句可以和if语句、while语句、for语句搭配使用。

使用with语句打开文件不需要再使用close语句。

34 图形用户界面入门:easygui

EasyGui官网:http://easygui.sourceforge.net/

小甲鱼翻译改编的教学文档:http://bbs.fishc.com/thread-46069-1-1.html

35-40 类和对象

类:属性(变量)+方法(函数),关键词class.

封装:有点类似于黑箱,不需要知到内部具体是什么样的,但是可以实现一定的功能。

类是对象,对象的集合就是类。

继承:class DerivedClassName(BaseClassName),括号内是父类的名称。

OO(面向对象)的特征:封装、继承、多态。

类名默认以大写字母开头,函数名默认以小写字母开头。

对象的方法都会有self:相当于C++的this指针。

类定义的时候要把self写进第一个参数。

-init-(self)方法:初始化已经实例化后的对象。

公有和私有:在变量名前加上双下划线就变为私有。,外部无法访问。但其实只是把双下划线的变量名改了名字,改成了—类名——变量名,Python的私有属于伪私有。

如果子类里面写了新函数覆盖了父类的方法,可以使用重新调用父类未绑定的函数方法,也可以使用super方法。

多重继承: class DerivedClassName(Based1, Based2, Based3 ...)

组合:把类的实例化放到新类中,就把类组合起来了。

如果属性的名字和方法名相同,属性会覆盖方法。

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

41-48 魔法方法

魔法方法总是被双下划线所包围,例如—init—(初始化方法)。,总是在适当的 时候自动被调用,要特别注意是自动被调用。参考http://bbs.fishc.com/thread-48793-1-1.html。

工厂函数:实例化后的类。

property函数的具体用法:参考http://bbs.fishc.com/thread-51106-1-1.html

属性访问的几个方法:

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

—getattribute—(self,name):定义当该类的属性被访问时的行为。

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

—delattr—(self,name):定义当一个属性被删除时的行为。

 描述符:将某种特殊类型的类的实例指派给另一个类的属性。特殊类型的类就是含有—get—(self,instance,owner)、—set—(self,instance,value)、—delete—(self,instance)函数的类。把这个类的实例赋值给另一个类的属性,也就是定义为函数。

property实际上就是一个描述符类。

定制容器有两个协议:如果定制的容器是不可变的,需要定义—len—()和—getitem—()方法。如果是可变的,需要增加定义—setitem—()和—delitem—()两个方法。

49 生成器

生成器是特殊的迭代器,关键字yield。

50-52 模块

封装:容器是对数据的封装,函数是对语句的封装;类是对方法和属性的封装;而模块就是程序,我的理解就是一个程序文件。用import导入模块,或者用from。。import。。 ,调用时可以省略命名空间(不建议使用)。第三种方法,import。。 as。。用新名字替换导入的命名空间。

命名空间:调用函数的时候要把模块名称加上。

if—name— = —main—,如果成立,说明是在测试程序,在主程序中就不会调用这段。

搜索路径:可以用import sys, sys.path来查看当前的搜索路径,得到的搜索路径是一个列表,可以用append函数把不在搜索路径的文件夹加入搜索路径。

包(package)的创建方法:

(1)创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字;

(2)在文件夹中创建一个_init_.py的模块文件,内容可以为空;

(3)将相关的模块放入文件夹中。

像个极客一样去思考:

(1)遇到问题首先考虑去帮助文档查找。

(2)在shell中用_doc_函数查看用法文档。

(3)用help函数。

猜你喜欢

转载自blog.csdn.net/weixin_39673207/article/details/78648308