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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 1、当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。 2、而且当 p1.address = 'China'并没有改变 Person 的 address,而是给 p1这个实例绑定了实例属性address 3、可见,千万不要在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性。
    查看全部
  • 需要再弄懂一些!
    查看全部
    0 采集 收起 来源:python中闭包

    2017-08-29

  • 当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。 还是直接来代码吧,废话少说 [python] view plain copy print? def fun_var_args(farg, *args): print "arg:", farg for value in args: print "another arg:", value fun_var_args(1, "two", 3) # *args可以当作可容纳多个变量组成的list result: [python] view plain copy print? arg: 1 another arg: two another arg: 3 **kwargs: [python] view plain copy print? def fun_var_kwargs(farg, **kwargs): print "arg:", farg for key in kwargs: print "another keyword arg: %s: %s" % (key, kwargs[key]) fun_var_kwargs(farg=1, myarg2="two", myarg3=3) # myarg2和myarg3被视为key, 感觉**kwargs可以当作容纳多个key和value的dictionary result: [python] view plain copy print? arg: 1 another keyword arg: myarg2: two another keyword arg: myarg3: 3
    查看全部
  • 接收一个函数,对其包装,然后返回一个新的函数
    查看全部
  • 所有的函数都是可调用对象。 一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。
    查看全部
    0 采集 收起 来源:python中 __call__

    2017-08-29

  • __slots__定义的属性仅对当前类起作用,对继承的子类是不起作用的。除非在子类中也定义__slots__,就像答案中一样,子类允许定义的属性就是自身的__slots__加上父类的__slots__。
    查看全部
    0 采集 收起 来源:python中 __slots__

    2017-08-29

  • 为什么用if不行。。
    查看全部
  • @property---这是关键字,固定格式,能让方法当“属性”用。 @score.setter---前面的"score"是@property紧跟的下面定义的那个方法的名字,"setter"是关键字,这种“@+方法名字+点+setter”是个固定格式与@property搭配使用。
    查看全部
    0 采集 收起 来源:python中 @property

    2018-03-22

  • 直接将其中一个变量转为float就行啊 在float特殊方法里返回的self.p首先得转换为float, 这是因为在python2.x中,/结果与计算的数的类型相关 //则是整除运算,计算的数虽然也与类型相关但丢失了精度 而输入的一切整数都会被python视为int 所以这样做能向float函数的作用靠拢
    查看全部
  • python3里 / 结果是浮点数 // 结果是整数
    查看全部
  • 更相减损术和辗转相除法的主要区别在于前者所使用的运算是“减”,后者是“除”。从算法思想上看,两者并没有本质上的区别,但是在计算过程中,如果遇到一个数很大,另一个数比较小的情况,可能要进行很多次减法才能达到一次除法的效果,从而使得算法的时间复杂度退化为O(N),其中N是原先的两个数中较大的一个。相比之下,辗转相除法的时间复杂度稳定于O(logN)。 计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况。
    查看全部
  • 设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b(a≥b),得a÷b=q......r1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得b÷r1=q......r2 (0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除以r2,……如此下去,直到能整除为止。其最后一个余数为0的除数即为(a, b)的最大公约数。 例如:a=25,b=15,a/b=1......10,b/10=1......5,10/5=2.......0,最后一个余数为0d的除数就是5, 5就是所求最大公约数。 def gcd(a, b): if b == 0: return a return gcd(b, a % b)
    查看全部
  • def gcd(a, b): if b == 0: return a return gcd(b, a % b) def __str__(self): g = gcd(self.p, self.q) return '%s/%s' % (self.p / g, self.q / g) 要约分。GCD作为缩写意义有多种。它通常表示最大公约数(greatest common divisor,简写为gcd;或highest common factor,简写为hcf),
    查看全部
  • def calc_prod(lst): def lazy_cj(): def f(x,y): return x*y return reduce(f,lst) return lazy_cj f = calc_prod([1, 2, 3, 4]) print f()
    查看全部
  • for n in range(num): ------for循环和 range函数用来控制下方代码块的循环次数,注意这里是0~num-1,共循环num次 L.append(a) ------给list在尾部加上一个新元素a,这个就是上一次循环退出时存在a中的斐波那契数字 a, b = b, a + b ------这已经中a, b = b, a + b其实就是多个变量的赋值运算,先算等号右边,再赋值给左边变量,这是python中一大亮点,a+b中的b不会被a所覆盖,如果是C,就要写成:int a=0,b=1,t ; t=a,a=b,b=b+t; self.numbers = L ------这一句就是把之前产生的list用类变量锁定,以后就可以通过变量名调用这个list 因为这里需要一个属性,方便在__str__特殊方法里面中对列表进行处理,这里是转换为字符串,如果不加numbers来接收L的话,则比较麻烦 不使用 __str__ ,print打印出来是个对象;使用了就把对象变成字符串,它的作用是把结果展示给用户的
    查看全部
    0 采集 收起 来源:python中 __len__

    2017-08-29

举报

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

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