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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 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

    注意: 第一个score(self)是get方法,用@property装饰,第二个score(self, score)是set方法,用@score.setter装饰,@score.setter是前一个@property装饰后的副产品。



    查看全部
    0 采集 收起 来源:python中 @property

    2018-09-18

  • 使之可以转型为float。

    查看全部
  • Fib(10)表示数列的前10个元素,print Fib(10) 可以打印出数列的前 10 个元素,len(Fib(10))可以正确返回数列的个数10。

    查看全部
    0 采集 收起 来源:python中 __len__

    2018-09-18

  • def is_odd(x):

        return x % 2 == 1

    print filter(is_odd,[1,4,6,7,9,12,17])


    def is_not_empty(s):

        return s and len(s.strip()) > 0

    print filter(is_not_empty,['test',None,'','str',' ','END'])


    a = ' 123'

    print a.strip()

    a = '\t\t123\r\n'

    print a.strip()


    import math

    def is_sqr(x):

        r = int(math.sqrt(x))

        return r * r == x

    print filter(is_sqr,range(1,101))


    查看全部
  • object is not iterable

    变量赋值时数据类型不匹配

    查看全部
    0 采集 收起 来源:python中偏函数

    2018-09-18

  • def f(x,y):

        return x + y

    print reduce(f,[1,3,5,7,9],100)


    def prod(x, y):

        return x*y

    print reduce(prod, [2, 4, 5, 7, 12])


    查看全部
  • 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(请自己动手验证)


    查看全部
    0 采集 收起 来源:python中闭包

    2018-09-18

  • math.sqrt(x) % 1 == 0


    除以1取余数,为0,就是整数。浮点数不为零。

    查看全部
  • 类方法其实可以看作是一个装饰器,它可以返回私有属性.

    私有属性是可以在类之内调用并返回的.

    查看全部
  • if-if-return

    if-elif- else 


    查看全部
    0 采集 收起 来源:python中 __cmp__

    2018-09-17

  •  if self.score == s.score:
                return cmp(self.name, s.name)
            return -cmp(self.score, s.score)

    更简洁

    查看全部
    0 采集 收起 来源:python中 __cmp__

    2018-09-17

  • def f(x):

        return x*x

    print map(f,[1,2,3,4,5,6,7,8,9])



    def format_name(s):

        return s[0].upper() + s[1:].lower()

    print map(format_name, ['adam', 'LISA', 'barT'])


    查看全部
  • def add(x,y,f):

        return f(x)+f(y)

    print add(-5,9,abs)


    import math

    def add(x,y,f):

        return f(x)+f(y)

    print add(25,9,math.sqrt)


    查看全部
  • 要定义关键字参数,使用 **kw;

    除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过 setattr(self, 'name', 'xxx') 设置属性。

    class Person(object):
        def __init__(self, name, gender, birth, **kw):
            self.name = name
            self.gender = gender
            self.birth = birth
            for k, v in kw.iteritems():
                setattr(self, k, v)
    xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student')
    print xiaoming.name
    print xiaoming.job


    查看全部
  • __future__前后都是两个单下划线

    查看全部

举报

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

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