-
filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。查看全部
-
filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。查看全部
-
upper() lower()分别字母是大小写转换功能 Python 还有一个函数可以首字母大写,其他小写capitalize()方法查看全部
-
class Person(object): __slots__ = ('name', 'gender') //使用slots来限制添加的属性,不在列表中的不能动态添加。 def __init__(self, name, gender): self.name = name self.gender = gender 一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。 class Fib(object): def __call__(self, num): a, b, L = 0, 1, [] for n in range(num): L.append(a) a, b = b, a + b return L f = Fib() print f(10)查看全部
-
def count(): fs = [] for i in range(1, 4): def f(x = i): return x * x fs.append(f) return fs f1, f2, f3 = count() print f1(), f2(), f3()查看全部
-
像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。查看全部
-
@property装饰器: @property的实现比较复杂,我们先考察如何使用。把一个getter方法变成属性,只需要加上@property就可以了, 此时,@property本身又创建了另一个装饰器@score.setter,负责把一个setter方法变成属性赋值,于是,我们就拥有一个可控的属性操作: @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.grade s.score = 60 print s.grade s.score = 99 print s.grade 使用了@property 就可以在自动在设置属性的时候做参数检查 ,直接读取属性,不用再定义s.get_score() 和 s.set_score()函数。 因为方法也是一个属性,所以,它也可以动态地添加到实例上,只是需要用 types.MethodType() 把一个函数变为一个方法: def fn_get_grade(self): if self.score >= 80: return 'A' if self.score >= 60: return 'B' return 'C' class Person(object): def __init__(self, name, score): self.name = name self.score = score p1 = Person('Bob', 90) p1.get_grade = types.MethodType(fn_get_grade, p1, Person) print p1.get_grade() # => A查看全部
-
带参数的装饰器: def performance(unit): def perf_decorator(f): def wrapper(*args, **kw): t1 = time.time() r = f(*args, **kw) t2 = time.time() t = (t2 - t1) * 1000 if unit=='ms' else (t2 - t1) print 'call %s() in %f %s' % (f.__name__, t, unit) return r return wrapper return perf_decorator查看全部
-
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。 def format_name(s): return s[0].upper() + s[1:].lower() print map(format_name, ['adam', 'LISA', 'barT'])查看全部
-
如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊方法 __cmp__(): 如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数。 要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数。 def __len__(self): return len(self.numbers) 四则运算的特殊方法(重载) def gcd(a, b): if b == 0: return a return gcd(b, a % b) class Rational(object): def __init__(self, p, q): self.p = p self.q = q def __add__(self, r): return Rational(self.p * r.q + self.q * r.p, self.q * r.q) def __sub__(self, r): return Rational(self.p * r.q - self.q * r.p, self.q * r.q) def __mul__(self, r): return Rational(self.p * r.p, self.q * r.q) def __div__(self, r): return Rational(self.p * r.q, self.q * r.p) def __str__(self): g = gcd(self.p, self.q) return '%s/%s' % (self.p / g, self.q / g) __repr__ = __str__ r1 = Rational(1, 2) r2 = Rational(1, 4) print r1 + r2 print r1 - r2 print r1 * r2 print r1 / r2查看全部
-
def __str__(self): return '(Student: %s, %s, %s)' % (self.name, self.gender, self.score) __repr__ = __str__ //因为 Python 定义了__str__()和__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员。 如果只用__str__ 输入实例p 的时候 (print p )就不会调用__str__() ,必须定义__repr__()才行。查看全部
-
返回函数不要引用任何循环变量,或者后续会发生变化的变量。查看全部
-
可以理解为函数的嵌套应用。查看全部
-
super(Student, self).__init__(name, gender) 必须有如上的语句初始化Student类,用以继承name和gender属性查看全部
-
1.类的私有属性无法被外部访问,但除了可以定义实例的属性外,还可以定义实例的方法。查看全部
举报
0/150
提交
取消