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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 总是从某个类继承,若无则从object中继承。 

    class MyClass(object):

         pass

    不要忘记初始化父类,调用super().__init__

    def __init__(self,args):

         super(SubClass,self).__init__(args)

         pass

    查看全部
  • __count私有属性代替count可以提高安全性让外部不可访问,只能类方法调用么

    查看全部
  • 什么叫私有的无法被外部访问,

    查看全部
  • fei

    r__和__str__这两个方法都是用于显示的,__str__是面向用户的,而__repr__面向程序员。 打印操作会首先尝试__str__和str内置函数(print运行的内部等价形式),它通常应该返回一个友好的显示。 __repr__用于所有其他的环境中:用于交互模式下提示回应以及repr函数,如果没有使用__str__,会使用print和str。它通常应该返回一个编码字符串,可以用来重新创建对象,或者给开发者详细的显示。 当我们想所有环境下都统一显示的话,可以重构__repr__方法;当我们想在不同环境下支持不同的显示,例如终端用户显示使用__str__,而程序员在开发期间则使用底层的__repr__来显示,实际上__str__只是覆盖了__repr__以得到更友好的用户显示

    查看全部
  • 闭包的count函数

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

    2018-11-07

  • 类方法,可以用于不影响原有函数的情况下,重新构造函数。

    有那么一个应用场景。比如类定义如下:

    class exp(object):

         def __init__(self,y=2018,m=6,d=27):

            self.y = y

            self.m = m

            self.d = d 

        def get_date(self):

            print("年份:%s" % self.y)

            print("月份:%s" % self.m)

            print("某日:%s" % self.d)

    这个类要求我们实例化时,输入y,m,d三个参数。

    res = exp('2018','6','27')

    res.get_date()

    但假设我们获得的日期是字符串形式是“2018-06-27”时,就需要我们做转换处理。当然我们可以每次将字符串转换成y、m、d。这个太麻烦了。

    此时,我们利用类方法解决这个问题

    class exp(object):

         def __init__(self,y=2018,m=6,d=27):

            self.y = y

            self.m = m

            self.d = d 

        @classmethod

        def deal(cls,str):

            y,m,d = map(int,str.split('-'))

            #无意发现这是个懵逼的表情('-')

            return cls(y,m,d)

        def get_date(self):

            print("年份:%s" % self.y)

            print("月份:%s" % self.m)

            print("某日:%s" % self.d)

    这时候我们就可以下面这样来获得返回啦

    resu = exp.deal('2018-06-27')

    resu.get_date()


    查看全部
  • sorted 这个函数的默认参数名是key   ,因为只需要函数lower,所以不用加(),加了就是函数的调用了

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

    2018-11-06

  • def log(f):
        def wrapper(*args, **kw):
            print 'call...'
            return f(*args, **kw)
        wrapper.__name__ = f.__name__
        wrapper.__doc__ = f.__doc__
        return wrapper

    这样写decorator很不方便,因为我们也很难把原函数的所有必要属性都一个一个复制到新函数上,所以Python内置的functools可以用来自动化完成这个“复制”的任务

    import functools
    def log(f):
        @functools.wraps(f)
        def wrapper(*args, **kw):
            print 'call...'
            return f(*args, **kw)
        return wrapper

    一定要注意缩进,不然会编译错误

    查看全部
  • Python capitalize()将字符串的第一个字母变成大写,其他字母变小写。对于 8 位字节编码需要根据本地环境。

    查看全部
  • s为字符串,rm为要删除的字符序列

    s.strip(rm)        删除s字符串中开头、结尾处,位于 rm删除序列的字符

    s.lstrip(rm)       删除s字符串中开头处,位于 rm删除序列的字符

    s.rstrip(rm)      删除s字符串中结尾处,位于 rm删除序列的字符


    查看全部
  • s[0]截取第一个,s[1:]截取剩下的东西

    要大写的字符串.upper()   大写

    要小写的字符串.lower()   小写

    查看全部
  • 装饰器

    Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。

    使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码。

    因为 add() 函数需要传入两个参数,但是 @log 写死了只含一个参数的返回函数。

    要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用


    查看全部
  •  print 'call %s() in %fs' % (f.__name__, (t2 - t1))

    1,这句代码中的三个%都是干嘛用的,能去掉吗?

    2,前两个%后面的s()和fs代表了什么,能替换成其他的代码吗?

    答:前两个%都代表数据格式,第一个%s 是字符型的,第二个%f是浮点型的,第三个百分号代表的是前面提到的%f 与%s对应的数据,即:%s对应的是f.__name__ ,%f对应的是t2-t1。是python里面输出语句的格式

    问:那%s后面的括号和%f后面的s的作用是什么啊?我刚试了一下%s后面的括号一变就会输出错误,但是%f后面的s貌似可以改变。

    答:%s后面的括号是函数后面的括号呀,比如你的%s是add,那么显示出来就是add() 后面的括号不是格式里的,至于为什么去掉之后是输出错误,因为你是在做这里的习题,习题要求你把这个括号显示出来,你去掉了当然是错了呀
    然后%f后面那个s 是 秒,比如用了0.11秒,显示出来就是0.11s,这个s是时间单位秒,不是python输出的格式

    查看全部
  • lambda 函数,可以不必定义函数名,直接创建一个函数对象

    查看全部
    1. 与类和实例无绑定关系的function都属于函数(function);

    2. 与类和实例有绑定关系的function都属于方法(method)。

    具体来说:

    在class外部定义的函数,都是函数,不是方法

    在class内定义的普通方法,因为它是要面向将来实例化对象的,其实它就是一个实例方法。它属于method,是一个方法。

    在class内定义的静态方法,它与任何对象都没有联系,等同于是在class外定义的function,它属于函数。

    在class内定义的类方法,它第一个参数必须是cls,它与class本身是绑定关系,它属于方法。


    查看全部

举报

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

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