为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
python进阶_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • _call__ 在Python中,函数其实是一个对象: >>> f = abs >>> f.__name__ 'abs' >>> f(-123) 123 由于 f 可以被调用,所以,f 被称为可调用对象。 所有的函数都是可调用对象。 一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。 我们把 Person 类变成一个可调用对象: class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def __call__(self, friend): print 'My name is %s...' % self.name print 'My friend is %s...' % friend
    查看全部
    0 采集 收起 来源:python中 __call__

    2018-03-22

  • 这种使用 get/set 方法来封装对一个属性的访问在许多面向对象编程的语言中都很常见。 因为Python支持高阶函数,在函数式编程中我们介绍了装饰器函数,可以用装饰器函数把 get/set 方法“装饰”成属性调用: 用@property 修饰某个方法 让他变成属性 就可以定义@xxx.setter了 都是直接拿属性名当方法用 关键是@property做了什么工作 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
    查看全部
    0 采集 收起 来源:python中 @property

    2018-03-22

  • filter(fun,list) 说明:过滤每个list中不符合条件的元素,如何判定fun说了算,不符合返回False,符合返回True, 返回值为list
    查看全部
  • >>> int(12.34) 12 >>> float(12) 12.0 如果要把 Rational 转为 int,应该使用: r = Rational(12, 5) n = int(r) 要让int()函数正常工作,只需要实现特殊方法__int__(): class Rational(object): def __init__(self, p, q): self.p = p self.q = q def __int__(self): return self.p // self.q
    查看全部
  • p分子,q 分母 这叫分式运算 叼叼的 参考代码: 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
    查看全部
  • reduce(fun(x,y),list) 说明:fun第一次接收两个参数,之后每次返回
    查看全部
  • reduce(fun(x,y),list) 说明:fun第一次接收两个参数,之后每次返回
    查看全部
  • map(fun,list) 说明:list中每个元素都作为参数传给fun,并将fun的每次返回值 生成新list 重点:可以理解为for循环的简写,也可以这么用
    查看全部
  • 需要根据num计算出斐波那契数列的前N个元素。 参考代码: class Fib(object): def __init__(self, num): a, b, L = 0, 1, [] for n in range(num): L.append(a) a, b = b, a + b self.numbers = L def __str__(self): return str(self.numbers) __repr__ = __str__ def __len__(self): return len(self.numbers) f = Fib(10) print f print len(f)
    查看全部
    0 采集 收起 来源:python中 __len__

    2016-01-16

  • return self.p // self.q==return '%s/%s' % (self.p, self.q)
    查看全部
  • 高阶函数: 说明:只是接收了另一个函数作为参数的 普通函数而已 重点: python中函数名其实是一个变量,就是将函数赋值给某个变量的结果。 而函数的参数是可以接受变量的
    查看全部
  • 要让int()函数正常工作,只需要实现特殊方法__int__(): class Rational(object): def __init__(self, p, q): self.p = p self.q = q def __int__(self): return self.p // self.q 结果如下: >>> print int(Rational(7, 2)) 3 >>> print int(Rational(1, 3)) 0
    查看全部
  • //求最大公约数函数 def gcd(a, b): if b == 0: return a return gcd(b, a % b)
    查看全部
  • class Person(object): def __init__(self, name, gender, **kw): self.name = name self.gender = gender for k, v in kw.iteritems(): setattr(self, k, v) p = Person('Bob', 'Male', age=18, course='Python')
    查看全部
  • 首先可以用 type() 函数获取变量的类型,它返回一个 Type 对象 >>> type(123) <type 'int'> >>> s = Student('Bob', 'Male', 88) >>> type(s) <class '__main__.Student'> 其次,可以用 dir() 函数获取变量的所有属性: >>> dir(123) # 整数也有很多属性... ['__abs__', '__add__', '__and__', '__class__', '__cmp__', ...] >>> dir(s) dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数了: >>> getattr(s, 'name') # 获取name属性 'Bob' >>> setattr(s, 'name', 'Adam') # 设置新的name属性 >>> s.name 'Adam' getattr(s, 'age', 20) # 获取age属性,如果属性不存在,就返回默认值20: 20
    查看全部

举报

0/150
提交
取消
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!