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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

    def f(x):
        return x*x
    print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])


    查看全部
  • def count():

        fs = []

        for i in range(1, 4):

            def f(j):

                def g():

                    return j*j

                return g

            r=f(i)

            fs.append(r)

        return fs

    f1, f2, f3 = count()

    print f1(), f2(), f3()


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

    2019-03-27

  • Person.address = Earth
    p1.address = China
    Person.address = Earth
    p2.address = Earth

    p1.address = 'China'并没有改变 Person 的 address,而是给 p1这个实例绑定了实例属性address 

    当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。

    查看全部
  • 定义类属性可以直接在 class 中定义:

    class Person(object):    
        
        def __init__(self, name):
            self.name = name

    因为类属性是直接绑定在类上的,所以,访问类属性不需要创建实例,就可以直接访问:

    print Person.address# => Earth

    由于Python是动态语言,类属性也是可以动态添加和修改的:

    Person.address = 'China'
    print p1.address

    每创建一个对象就会调用一次init函数

    查看全部
  • 内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。

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

    2019-03-27

  • 如果一个属性由双下划线开头(__),该属性就无法被外部访问。

    self.__job = 'Student'

    如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性,


    查看全部
  • 要定义关键字参数,使用 **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


    查看全部
  • class Person(object):    def __init__(self, name, gender, birth):
            self.name = name
            self.gender = gender
            self.birth = birth

    __init__() 方法的第一个参数必须是 self

    创建实例时,就必须要提供除 self 以外的参数:

    xiaoming = Person('Xiao Ming', 'Male', '1991-1-1')
    xiaohong = Person('Xiao Hong', 'Female', '1992-2-2')


    查看全部
  • sorted(L1, lambda p1, p2: cmp(p1.name, p2.name))


    查看全部
  • filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

    例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:


    def is_odd(x):

        return x % 2 == 1

    然后,利用filter()过滤掉偶数:


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

    结果:[1, 7, 9, 17]


    查看全部
  • cmp作为一个参数,定义了一个匿名函数,cmp比较两者的大小,进行排序

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

    2019-03-26

  • 在定义装饰器时,在其后加上@functools.wraps(f),就需要把原函数的一些属性复制到新函数中:

    需要在之前加上import functools

    查看全部
  • 带参数的decorator等于在无参的decorator外再套用一层函数,

    查看全部
  • def format_name(s):

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


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


    查看全部
  • 1、当实例属性和类属性重名时,实例属性优先级高

    查看全部

举报

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

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