python进阶 廖雪峰(慕课网)

python进阶 廖雪峰(慕课网),第1张

python进阶 廖雪峰(慕课网)

1.函数式编程

变量名可以指向函数,那么函数就可以通过一个变量传递给另一个函数或者变量。


map()函数:接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的list 并返回。


(注意不改变原有的list)

reduce()函数:接收一个函数 f 和一个 list,传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值,reduce()还可以接收第3个可选参数,作为计算的初始值。


filter()函数:接收一个函数 f 和一个 list,函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。


自定义排序函数:sorted()函数默认对list从小到大进行排列。


sorted函数的作用是接受一个比较函数对序列进行排列,而这个比较函数会根据返回值是-1,就会把 x 排在 y 前面,返回值是1,就会把 x 排在 y 后面,返回值为0,就把两者并排。


sorted()也可以对字符串进行排序,字符串默认按照ASCII大小来比较。


Python中返回函数:Python的函数不但可以返回int、str、list、dict等数据类型,还可以返回函数。


打印时需要注意返回值从而判断 print f 还是 print f()。


Python中闭包:内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。


返回函数不要引用任何循环变量,或者后续会发生变化的变量。


Python中匿名函数: lambda x: x * x ,关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。


strip()方法语法:str.strip([chars]);chars -- 移除字符串头尾指定的字符序列。


Python中decorator装饰器:

本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。


使用 decorator 用Python提供的 @ 语法,装饰器顾名思义就是起到装饰作用,即进行一些类似日志、运行时间的统计,其本质为内嵌套函数。


对于自适应任何参数定义的函数,可以使用Python的 *args 和 **kw,就这两个放在参数位置即可保证任意个数的参数总是能正常调用。


带参数的装饰器,带参数的log函数首先返回一个decorator函数,再让这个decorator函数接收my_func并返回新函数,之后再装饰器函数中进行例如log、计算运行时间等实现。


Py

Python中偏函数:可以简化参数。


当一个函数有很多参数时,调用者就需要提供多个参数。


如果减少参数个数,就可以简化调用者的负担。


Python中的模块

模块和包的概念:模块是一个Python文件,包是一个文件夹。


Python包里面有一个_init._.py文件,用来和普通目录做区别。


导入模块:improt导入模块       from logging import log导入模块中的一个函数           from logging import log as logger给导入模块的函数起一个别名

动态导入:先尝试从cStringIO导入,如果失败了(比如cStringIO没有被安装),再尝试从StringIO导入。


提高运行速度。


try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO

__future__:当新版本的一个特性与旧版本不兼容时,该特性将会在旧版本中添加到__future__中,以便旧的代码能在旧版本中测试新特性。


from __future__ import division

安装第三方模块:pip    www.pypi.python.org

面向对象编程

Python中初始化实例属性:_init__() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定

Python中访问限制:如果一个属性由双下划线开头(__),该属性就无法被外部访问。


(__xxx__)除外

Python中创建类属性:如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有实例访问的类属性都是同一个!也就是说,实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。


Python中类属性和实例属性冲突:当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。


注意:千万不要在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性。


Python中定义实例方法:实例的方法就是在类中定义的函数,它的第一个参数永远是 self,__init__(self, name)其实也可看做是一个特殊的实例方法

Python中方法也是属性: class 中定义的实例方法其实也是属性,它实际上是一个函数对象, types.MethodType(函数,实例,类) 把一个函数变为一个方法  p1.get_grade = types.MethodType(fn_get_grade, p1, Person)

Python中定义类方法:通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。


类方法的第一个参数将传入类本身,通常将参数名命名为 cls

类的继承

Python中继承一个类:函数super(Student, self)将返回当前类继承的父类,即 Person ,然后调用__init__()方法,注意self参数已在super()中传入,在__init__()中将隐式传递,不需要写出(也不能写)

Python中判断类型:函数  isinstance(变量,类型)   可以判断一个变量的类型

Python中多态:需要深入学习

Python中获取对象信息:type() 函数获取变量的类型, dir() 函数获取变量的所有属性,dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数

定制类

Python中定义了__str__()和__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员。


__repr__() = __str__()

Rational类虽然可以做加法,但无法做减法、乘方和除法,请继续完善Rational类,实现四则运算

Python的@score.setter是前一个@property装饰后的副产品。


Python如果要限制添加的属性,__slots__是指一个类允许的属性列表。


					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/585492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存