为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • 格式化函数:

    s[0].upper() 首字母大写
    s[1:].lower() 其余字母小写


    查看全部
  • 计算平方根可以用函数:

    math.sqrt()


    查看全部
  • f1, f2, f3 = count() # 高级序列赋值,把count()里的值按顺序分别赋值给前面的变量



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

    2019-08-24

  • @functools.wraps(function):用于装饰器中将原函数的一些属性(函数名称、注释文档、参数列表等)复制到返回的新函数中。

    def performance(unit):
        def perf_decorator(f):
            @functools.wraps(f)
            def wrapper(*args, **kw):
                ...
            return wrapper
        return perf_decorator


    查看全部
  • 带参数的decoractor:

    @log('DEBUG')
    def my_fuc():
        pass
    # 即
    my_func = log('DEBUG')(my_func)
    # 即
    log_decorator = log('DEBUG')
    my_func = log_decorator(my_func)
    # 即
    log_decorator = log('DEBUG')
    @log_decorator
    def my_func():
        pass
    
    #
    
    def log(prefix):
        def log_decorator(f):
            def wrapper(*args, **kw):
                print '[%s] %s()...' % (prefix, f.__name__)
                return f(*args, **kw)
            return wrapper
        return log_decorator
    
    @log('DEBUG')
    def test():
        pass
    print test()


    查看全部
  • class Rational(object):

        def __init__(self, p, q):

            self.p = p

            self.q = q


        def __int__(self):

            return self.p / self.q


        def __float__(self):

            return self.p * 1.0 / self.q


    print int(Rational(7, 2))

    print float(Rational(7, 2))

    print float(Rational(1, 3))


    查看全部
  • 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 __str__(self):
            return '%s/%s' % (self.p, self.q)
        __repr__ = __str__

    现在可以试试有理数加法:

    >>> r1 = Rational(1, 3)
    >>> r2 = Rational(1, 2)
    >>> print r1 + r2
    5/6


    查看全部
  • reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

    查看全部
  • class Fib(object):


        def __init__(self, num):

            if num < 1:

                self.array = []

            elif num == 1:

                self.array = [0]

            else:

                self.array = [0,1]

                for i in range(2, num):

                    self.array.append(self.array[i-2] +self.array[i-1])

            pass


        def __str__(self):

            # return self.array.__str__()

            return str(self.array)

        def __len__(self):

            return len(self.array)


    f = Fib(10)

    print f

    print len(f)


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

    2019-08-23

  • 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 s is not Student:
                return -1
            if self.name < s.name:
                return -1
            elif self.name > s.name:
                return 1
            else:
                return 0
    
    L = [Student('Tim', 99), Student('Bob', 88), 100, 'Hello']
    print sorted(L)


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

    2019-08-23

  • 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.score > s.score:

                return -1

            elif self.score == s.score:

                return cmp(self.name,s.name)

            else:

                return 1


    L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 99)]

    print sorted(L)


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

    2019-08-23

  • types动态将方法绑定到实例上
    查看全部
  • def calc_prod(lst):

        def h():

            return reduce(lambda x,y:x*y,lst)

        return h

    f = calc_prod([1, 2, 3, 4])

    print f()


    查看全部
  • 无参数decorator:使用“@”可避免手动编写“f = decorate(f)”这样的代码。

    def dec(f):
        def fn(x):
            ...
            return f(x)
        return fn
    
    @dec
    def f2(y):
        ...
    
    def log(f):
        def fn(x):            # def fn(*args, **kw): 可自适应任何参数定义的函数
            ...
            return f(x)        # return f(*args, **kw)
        return fn


    查看全部
  • 调用 sorted() 并传入 reversed_cmp 就可以实现倒序排序:

    >>> sorted([36, 5, 12, 9, 21], reversed_cmp)
    [36, 21, 12, 9, 5]


    查看全部

举报

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

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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