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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 如何让每个实例拥有各自不同的属性?由于Python是动态语言,对每一个实例,都可以直接给他们的属性赋值,例如,给xiaoming这个实例加上name、gender和birth属性

    查看全部
  • 如果要提高Python代码的运行速度,最简单的方法是把某些关键函数用 C 语言重写,这样就能大大提高执行速度。然后可以利用try...except语句实现兼容。 所谓的胶水语言就是这样来的?
    查看全部
  • 在Python中,类通过 class 关键字定义。按照 Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的。

    查看全部
  • 如果使用 from...import 导入 log 函数,势必引起冲突。这时,可以给函数起个“别名”来避免冲突: from math import log from logging import log as logger
    查看全部
  • class Person(object):定义一个类Person
        address = 'Earth'定义一个类属性address
        def __init__(self, name):当创建实例时,__init__()方法被自动调用,我们就能在此为每个实例都统一加上属性name
            self.name = name
    
    p1 = Person('Bob')创建实例用 类名 +()创建实例时,必须要提供除 self 以外的参数name
    p2 = Person('Alice')
    
    print 'Person.address = ' + Person.address打印类Person的address属性
    
    是为类Person的实例p1添加一个也叫address,并没有改变类Person 的 属性address
    对p1来说,它有一个实例属性address(值是'China'),而它所属的类Person也有一个类属性address,值是 Earth
    print 'p1.address = ' + p1.address打印的是p1的实例属性adress值是China
     
    print 'Person.address = ' + Person.address类属性
    print 'p2.address = ' + p2.address类属性

    不要在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性

    查看全部
  • import time

    def performance(f):
        def fn(*args, **kw):
            t1 = time.time()#调用之前的时间
            r = f(*args, **kw)#调用
            t2 = time.time()%调用之后的时间
            print 'call %s() in %fs' % (f.__name__, (t2 - t1))#“%”表示格式化输出
            return r
        return fn


    @performance
    def factorial(n):
        return reduce(lambda x,y: x*y, range(1, n+1))

    print factorial(10)


    查看全部
  • xiaoming = Person()
    xiaoming.name = 'Xiao Ming'
    xiaoming.gender = 'Male'
    xiaoming.birth = '1990-1-1'

    就是这样的赋值语句 可以直接给他们的属性赋值 实例的属性可以像普通变量一样进行操作

    查看全部
  • class Person(object):

        count=0#定义类属性可以直接在 class 中定义

        def __init__(self, name):

            self.name = name

            Person.count= Person.count+1#由于创建实例必定会调用__init__()方法,所以在这里修改类属性 count 很合适。修改类Person属性count会导致所有实例访问到的Person类属性count全部都受影响。

            

    p1 = Person('Bob')

    print Person.count注意这里是打印的类的count属性!! 不是实例的!!!


    p2 = Person('Alice')

    print Person.count


    p3 = Person('Tim')

    print Person.count


    查看全部
  •  这里要注意

    **kw是一个dict参数

    dict的iteritems()方法返回一个迭代器

    查看全部
  • 导入模块:

    from<模块名>import<函数名>as<别名>;——用于函数名重复,但需要在同一个代码中调用时

    from<模块名>import <函数名>;——用于函数名有重复的时候

    import<函数名>;——用于函数名唯一的时候

    【StringIO模块要比cStringIO运行速度慢!】

    【模块__future__的某些功能可以将新版的python中的功能导入旧版使用】


    查看全部
  • 查看全部
  • count() 返回的是一个list,也就是fs。fs 被append的是一个函数 g,一定要在f下面套一个g的函数才能使f返回的是一个函数而不是一个数值

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

    2018-12-12

    1. try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。

    2. 利用import ... as ...,还可以动态导入不同名称的模块。

    查看全部
    1. 要使用一个模块,我们必须首先导入该模块。Python使用import语句导入一个模块。例如,导入系统自带的模块 math

    2. 你可以认为math就是一个指向已导入模块的变量,通过该变量,我们可以访问math模块中所定义的所有公开的函数、变量和类

    3. 如果我们只希望导入用到的math模块的某几个函数,而不是所有函数,可以用下面的语句:

    4. from math import pow, sin, log
    5. 这样,可以直接引用 pow, sin, log 这3个函数,但math的其他函数没有导入进来

    6. 如果遇到名字冲突怎么办?比如math模块有一个log函数,logging模块也有一个log函数,如果同时使用,如何解决名字冲突?

    7. 如果使用import导入模块名,由于必须通过模块名引用函数名,因此不存在冲突:

    8. import math, logging
      print math.log(10)   # 调用的是math的log函数logging.log(10, 'something')   # 调用的是logging的log函数
    9. 如果使用 from...import 导入 log 函数,势必引起冲突。这时,可以给函数起个“别名”来避免冲突:

    10. from math import log
      from logging import log as logger   # logging的log现在变成了loggerprint log(10)   # 调用的是math的loglogger(10, 'import from logging')   # 调用的是logging的log
    查看全部

举报

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

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