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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • #可以实例化多个k-v对,即任意数量的关键字 

    for k,v in kw.iteritems(): 
         setattr(self,k,v)
    查看全部
  • functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值

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

    2018-08-23

  • 带装饰器的函数,函数名等其他属性会发生改变

    对于那些依赖函数名的代码就会失效。

    用@functools.wraps(f)将原函数的属性复制给新函数

    由于我们把原函数签名改成了(*args, **kw),因此,无法获得原函数的原始参数信息。即便我们采用固定参数来装饰只有一个参数的函数

    查看全部
  • p1.get_grade 返回的是一个函数对象,但这个函数是一个绑定到实例的函数,p1.get_grade() 才是方法调用。

    因为方法也是一个属性,所以,它也可以动态地添加到实例上,只是需要用 types.MethodType() 把一个函数变为一个方法


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

    闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变


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

    2018-08-23

  • p1.address = 'China'并没有改变 Person 的 address,而是给 p1这个实例绑定了实例属性address ,对p1来说,它有一个实例属性address(值是'China'),而它所属的类Person也有一个类属性address,所以:

    访问 p1.address 时,优先查找实例属性,返回'China'。

    访问 p2.address 时,p2没有实例属性address,但是有类属性address,因此返回'Earth'。

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


    查看全部
  • ,实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。

    查看全部
  • import time


    def performance(f):

        def print_time(*args, **kw):

            print 'call '+f.__name__+'() in '+time.strftime('%Y-%m-%d',time.localtime(time.time()))

            return f(*args,**kw)

        return print_time


    @performance

    def factorial(n):

        return reduce(lambda x,y: x*y, range(1, n+1))


    print factorial(10)



    查看全部
  • map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])
    [1, 4, 9, 16, 25, 36, 49, 64, 81]

    关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。

    匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。


    查看全部
  • def count():
        fs = []
        for i in range(1, 4):
            def f():
                 return i*i
            fs.append(f)
        return fs
    
    f1, f2, f3 = count()

    这里的fs[]这个列表是用来装返回的函数f的,所以 f1,f2,f3,都是指向函数的变量,调用得到返回的i**2的值

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

    2018-08-23

  • class Person(object):

        def __init__(self, name, gender, birth, job):

            self.name = name

            self.gender = gender

            self.birth = birth

            self.job = job


    查看全部
  • Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问

    查看全部
  • setattr 函数对应函数 getatt(),用于设置属性值,该属性必须存在。

    查看全部
  • 输出表示两个实例指向的内存地址不同,所以打印false

    查看全部
  • s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符

    当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ')

    查看全部

举报

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

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