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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • lambda: 'A'等价于return'A',相当于一个函数f,那么f()='A'.因此,p1.get_grade=f,p1.get_grade()=f() 就是这个意思,但没有说全 p1.get_grade是属性,只不过这里的属性是一个函数对象,即f p1.get_grade()是方法,前面的p1就是调用这个方法的对象,即实例,整句来说就是实例方法
    查看全部
  • 在python中函数和对象的区别并不显著
    查看全部
    0 采集 收起 来源:python中 __call__

    2016-07-26

  • 在Python,有两种属性,类属性和实例属性,类属性相当于类的静态方法(类比于Java),实例属性是每个实例单独的属性,楼主所说的用Person.count,这里调用的就是类属性,self.count调用的是实例属性,当在_init_中调用的是self时,然后打印的时候调用的是Person.count,那么count肯定是它的初始值0了,因为它没有改变,用self.count,改变的只是实例的属性,并没有改变类属性,所以打印出三个0了,如果楼主把print那个部分的Person换成p1,p2,p3的时候,打印的就是三个1了,因为他们的实例属性在初始化的时候被+1了,而需要改变类属性的话,楼主就需要把self.count = self.count +1 改成Person.count=Person.count+1了
    查看全部
  • 对int,str 等内置数据类型排序时,Python的sorted()按照默认的比较函数cmp排序,但是,如果一组Student类的实例排序时,就必须提供我们自己的特殊方法__cmp__() class Student(object): def __init__(self,name,score): self.name = name self.score = score def __str__(self): return '(%s,%s)' % (self.name,self.score) __repr__ = __str__ def __cmp__(self,s): if self.name < s.name: return -1 elif self.name > s.name: return 1 else: return 0
    查看全部
    0 采集 收起 来源:python中 __cmp__

    2018-03-22

  • 类属性调用:Person.count 实例属性调用:self.count
    查看全部
  • Student类的__slots__只需要包含Person类不包含的score属性即可。
    查看全部
    0 采集 收起 来源:python中 __slots__

    2016-07-26

  • 有一个偷懒的定义__repr__的方法 class Person(object): def __init__(self,name,gender): self.name = name self.gender = gender def __str__(self): return '(Person:%s,%s)' % (self.name,self.gender) __repr__ = __str__
    查看全部
  • 感觉 @property的作用就是把方法装饰成属性
    查看全部
    0 采集 收起 来源:python中 @property

    2016-07-26

  • 如果要把一个类的实例变成Str,就需要实现特殊方法__str__() class Person(object): def __init__(self,name,gender): self.name = name self.gender = gender def __str__(self): return '(Person:%s, %s)' % (self.name,self.gender) 因为Python定义了__str__和__repr__(),两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员
    查看全部
  • 被返回的那个函数不能引用任何循环变量,或者后续会发生变化的变量。
    查看全部
    0 采集 收起 来源:python中闭包

    2016-07-26

  • 计算平方根可以用函数: >>> math.sqrt(2) 1.4142...
    查看全部
  • str.title() 首字母大写 其余小写
    查看全部
  • str.upper()将字符转成大写 str.lower()将字符转成小写
    查看全部
  • 求平方根 import math math.sqrt( x )
    查看全部
  • 在函数内部定义的函数和外部定义的函数是一样的,只是他们无法被外部访问: def g(): print 'g()...' def f(): print 'f()...' return g 将 g 的定义移入函数 f 内部,防止其他代码调用 g: def f(): print 'f()...' def g(): print 'g()...' return g 但是,考察上一小节定义的 calc_sum 函数: def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum 注意: 发现没法把 lazy_sum 移到 calc_sum 的外部,因为它引用了 calc_sum 的参数 lst。 像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。举例如下: # 希望一次返回3个函数,分别计算1x1,2x2,3x3: def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fs f1, f2, f3 = count() 你可能认为调用f1(),f2()和f3()结果应该是1,4,9,但实际结果全部都是 9(请自己动手验证)。 原因就是当count()函数返回了3个函数时,这3个函数所引用的变量 i 的值已经变成了3。由于f1、f2、f3并没有被调用,所以,此时他们并未计算 i*i,当 f1 被调用时: >>> f1() 9 # 因为f1现在才计算i*i,但现在i的值已经变为3 因此,返回函数不要引用任何循环变量,或者后续会发生变化的变量。
    查看全部
    0 采集 收起 来源:python中闭包

    2018-03-22

举报

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

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