filter(func,list),func的返回值应为bool类型,根据是否为true筛选,返回值是一个新的list
sorted(list,func),func的返回值为-1.0.1,返回值为一个新的list
闭包是一个比较复杂的概念,高阶函数的返回值是一个函数,且该函数是直到返回后才进行执行
from myapp.log import logger
def log_order_event(func):
def wrapper(*args, **kwargs):
logger.info("Ordering: %s", func.__name__)
order = func(*args, **kwargs)
logger.debug("Order result: %s", func.__name__)
return order
return wrapper
@log_order_event
def order_pizza():
pass
根据闭包的性质,返回的order将在两个提示信息中间执行,这就是装饰器的原理,一般为双重,但如果要在装饰器中内置参数,则需要3重结构才行。
functools.partial 的作用就是,把一个函数的某些参数给固定住(也就是
设置默认值),返回一个新的函数,调用这个新函数会更简单。
例如,int()函数可以接受字符串变成数字,int(‘123’)=123,但是是可以添加base参数的
int(‘123‘,base=8)意思是123为八进制数码字符,用int转为10进制整数。
我们可以用functools中的偏函数功能:
int2 = functools.partial(int, base=2)
又如:
max2 = functools.partial(max, 10)
实际上会把 10 作为 *args 的一部分自动加到左边
总之,偏函数能固定住函数的一些参数。
1.类内可以写函数,可以在__init__内写一些初始参数。但最大的不同之处在于,类的实例可以自己随便加属性,但各实例并不相通。
2.类外可以绑方法,可以绑在类上,也可以绑在实例上。
3.继承和多态。。。
4.slots = (‘name’, ‘age’),可以限制类中属性的添加只能为slots中的tuple列表
5.@property与@func.setter构成一组,可以把函数调用变为属性。例子:
class Student(object):
@property
def score(self):
return self._score
@score.setter
def score(self, value):
if not isinstance(value, int):
raise ValueError('score must be an integer!')
if value < 0 or value > 100:
raise ValueError('score must between 0 ~ 100!')
self._score = value
6.多重继承/Mixin
7.类中的定制函数:
len(‘ABC’)= ‘ABC’.__len__()
__str__(): print 其中可以添加__repr__ = __str__
__iter__():返回迭代对象,用于for。。。in。。。
__getitem__参数n:用于[]运算取第n个元素
__getattr__()参数str:用于找不到str属性时的处理
__call__:用于直接调用实例方法
1.关于try、except和finally
2.关于错误类型,自定义错误类型,rasize错误等等
3.关于断言assert,运行时可加参数使其不运行
不详述,用时学
1.文件读写
2.操作文件和目录
1.用通用的JSON或者XML,跨平台,跨语言地存储和调用数据
python适用多进程
主要用multiprocessing中的process的方法实现进程