-
使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码。
def log(f): def fn(x): print 'call ' + f.__name__ + '()...' return f(x) return fn @log def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1)) print factorial(10)
查看全部 -
匿名函数: lambda x:~ 或者 lambda x,y:~ (其中x和y是匿名函数的传参)
例如:print filter(lambda s: s and len(s.strip())>0 ,['test', None, '', 'str', ' ', 'END'])
或者例如:>>>maybs=lambda x: x if x>0 else -x
查看全部 -
所有的函数都是可调用对象。
在Python中,函数也是对象,对象和函数的区别并不显著
查看全部 -
def calc_prod(lst):
def lazy():
def f(x,y):
return x*y
return reduce(f,lst,1)
return lazy
f = calc_prod([1, 2, 3, 4])
print f()#1*2*3*4
查看全部 -
sorted([~],f) #sorted函数调用f,并对list[~]进行排序
cmp()函数是对参数进行大小比较,返回值为1(前大后小) -1(前小后大) 0(一样大)
查看全部 -
s.strip(rm)删除s字符串开头、结尾处的rm序列的字符,当rm为空时,删除空白符('\n','\r','\t,' ')
>>>return x and x>0 # 判断并返回x的值
filter(f,range(1,101)) #在1到100中返回符合反函数f的元素
查看全部 -
闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。
查看全部 -
__slots__():指明类所允许添加的属性列表,限制类所能拥有的属性。
class Person(object): __slots__ = ('name', 'gender') def __init__(self, name, gender): self.name = name self.gender = gender class Student(Person): __slots__ = ('score') def __init__(self, name, gender, score): super(Student, self).__init__(name, gender) self.score = score
查看全部 -
@property:使实例方法可以当作属性直接调用,用于取属性值。
@s.setter:使实例方法s可以当作属性直接调用,用于直接给属性赋值,同时可以执行一些操作。
class Student(object): def __init__(self, name, score): self.name = name self.__score = score @property def score(self): return self.__score @score.setter def score(self, score): if score < 0 or score > 100: raise ValueError('invalid score') self.__score = score s = Student('Bob', 59) print s.score # 59 s.score = 69 print s.score # 69
查看全部 -
版本3+导入reduce
执行 from functools import reduce
查看全部 -
安装第三方模块
pip install XXX.py
查看全部 -
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
注意:map()函数不改变原有的 list,而是返回一个新的 list。
upper():将字母变成大写
lower():将字母变成小写
查看全部 -
sqrt():求平方根函数
fds():求绝对值函数
查看全部 -
函数式编程: 特点:把计算机视为函数而非指令
查看全部 -
Student类的__slots__只需要包含Person类不包含的score属性即可。
查看全部
举报