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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 但int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做 N 进制的转换:
    查看全部
    0 采集 收起 来源:python中偏函数

    2016-11-25

  • math.sqrt(x)得到的值一定是float类型,即使是2.0 所以用return isinstance(math.sqrt(x),int)无法得到结果 用return math.sqrt(x)%1==0进行代替
    查看全部
  • class Person(object): __count = 0 @classmethod def how_many(cls): return cls.__count def __init__( self , name ): self.name=name Person.count = Person.count + 1 print Person.how_many() p1 = Person('Bob') print Person.how_many()
    查看全部
  • Python提供了open()函数来打开一个磁盘文件,并返回 File 对象。File对象有一个read()方法可以读取文件内容: 例如,从文件读取内容并解析为JSON结果: import json f = open('/path/to/file.json', 'r') print json.load(f) 由于Python的动态特性,json.load()并不一定要从一个File对象读取内容。任何对象,只要有read()方法,就称为File-like Object,都可以传给json.load()。
    查看全部
    0 采集 收起 来源:python中多态

    2016-11-25

  • performance是一个装饰器,用于统计程序的执行时间。 装饰器(decorator)是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工。装饰器就是一个函数,与普通函数不同的是装饰器的输入参数是一个函数。 @performance def factorial(n): 等价于 performance(factorial)(n) 追问 print语句里是什么意思啊 追答 'call %s() in %fs'是格式字符串,%s是参数待替换的位置 (f.__name__, (t2 - t1))是格式字符串传入的参数,参数用一个元组来表示 中间的%是分隔符 f.__name__:__name__是一个特殊方法,存储的是函数的名称,每一个函数都会自动有这个方法 追问 装饰器这儿感觉好难理解。。。。
    查看全部
  • def count(): fs = [] for i in range(1, 4): def dd(j): def dl(): return j*j return dl fs.append(dd(i)) #在这个地方实际上dd(i)已经运行了,所以就会分配一个地址给dl,然后将返回的dl方法保存起来。 return fs f1, f2, f3 = count() print f1(), f2(), f3() #######章节中的事例: def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f)#在这里返回的是引用,而不是运行了的函数,所以都是同一个f地址 return fs f1, f2, f3 = count()
    查看全部
    0 采集 收起 来源:python中闭包

    2016-11-24

  • python中多重继承 除了从一个父类继承外,Python允许从多个父类继承,称为多重继承。 多重继承的继承链就不是一棵树了,它像这样: class A(object): def __init__(self, a): print 'init A...' self.a = a class B(A): def __init__(self, a): super(B, self).__init__(a) print 'init B...' class C(A): def __init__(self, a): super(C, self).__init__(a) print 'init C...' class D(B, C): def __init__(self, a): super(D, self).__init__(a) print 'init D...' 看下图: 像这样,D 同时继承自 B 和 C,也就是 D 拥有了 A、B、C 的全部功能。多重继承通过 super()调用__init__()方法时,A 虽然被继承了两次,但__init__()只调用一次
    查看全部
  • import time def performance(f): #定义装饰器函数,功能是传进来的函数进行包装并返回包装后的函数 def fn(*args, **kw): #对传进来的函数进行包装的函数 t_start = time.time() #记录函数开始时间 r = f(*args, **kw) #调用函数 t_end = time.time() #记录函数结束时间 print 'call %s() in %fs' % (f.__name__, (t_end - t_start)) #打印调用函数的属性信息,并打印调用函数所用的时间 return r #返回包装后的函数 return fn #调用包装后的函数 @performance #调用装饰器 def factorial(n): #定义乘数函数 return reduce(lambda x, y: x * y, range(1, n + 1)) print factorial(10)
    查看全部
  • python中多态 类具有继承关系,并且子类类型可以向上转型看做父类类型,如果我们从 Person 派生出 Student和Teacher ,并都写了一个 whoAmI() 方法. 在一个函数中,如果我们接收一个变量 x,则无论该 x 是 Person、Student还是 Teacher,都可以正确打印出结果: def who_am_i(x): print x.whoAmI() p = Person('Tim', 'Male') s = Student('Bob', 'Male', 88) t = Teacher('Alice', 'Female', 'English') who_am_i(p) who_am_i(s) who_am_i(t) 运行结果: I am a Person, my name is Tim I am a Student, my name is Bob I am a Teacher, my name is Alice 这种行为称为多态。也就是说,方法调用将作用在 x 的实际类型上。s 是Student类型,它实际上拥有自己的 whoAmI()方法以及从 Person继承的 whoAmI方法,但调用 s.whoAmI()总是先查找它自身的定义,如果没有定义,则顺着继承链向上查找,直到在某个父类中找到为止。 由于Python是动态语言,所以,传递给函数 who_am_i(x)的参数 x 不一定是 Person 或 Person 的子类型。任何数据类型的实例都可以,只要它有一个whoAmI()的方法即可
    查看全部
    0 采集 收起 来源:python中多态

    2016-11-24

  • 练习代码,麻烦解释一下。 for k, v in kw.iteritems(): setattr(self, k, v) 这个部分代码不太明白 2016-08-22 源自:python进阶 4-4 106 浏览 1 回答 最佳回答 2016-08-22 **kw表示可以任意输入参数和对应的值,这些键值对被组织成字典dict,for k,v in kw.iteritems()表示对该字典的键值对进行迭代(k获得键,v获得值), iteritems()这个方法可以一个一个输出字典中的键值对,setattr(self,k,v)表示对实例自身设置属性和对应的值,self表示实例自身,k表示参数,v表示值。
    查看全部
  • sorted(L1,key=lambda x:x.name)的意思是用name作为关键字进行排序
    查看全部
  • 当新版本的一个特性与旧版本不兼容时,该特性将会在旧版本中添加到__future__中,以便旧的代码能在旧版本中测试新特性。在Python 3.x中,字符串统一为unicode,不需要加前缀 u,而以字节存储的str则必须加前缀 b。
    查看全部
  • 函数isinstance()可以判断一个变量的类型 class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender class Student(Person): def __init__(self, name, gender, score): super(Student, self).__init__(name, gender) self.score = score class Teacher(Person): def __init__(self, name, gender, course): super(Teacher, self).__init__(name, gender) self.course = course p = Person('Tim', 'Male') s = Student('Bob', 'Male', 88) t = Teacher('Alice', 'Female', 'English') 可以使用 isinstance 判断类型: >>> isinstance(p, Person) True >>> isinstance(p, Student) False >>> isinstance(p, Teacher) False 这说明在继承链上,一个父类的实例不能是子类类型,因为子类比父类多了一些属性和方法。 我们再考察 s : >>> isinstance(s, Person) True >>> isinstance(s, Student) True >>> isinstance(s, Teacher) False s 是Student类型,不是Teacher类型,这很容易理解。但是,s 也是Person类型,因为Student继承自Person,虽然它比Person多了一些属性和方法,但是,把 s 看成Person的实例也是可以的。这说明在一条继承链上,一个实例可以看成它本身的类型,也可以看成它父类的类型。
    查看全部
  • python中继承一个类 如果已经定义了Person类,需要定义新的Student和Teacher类时,可以直接从Person类继承: class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender 定义Student类时,只需要把额外的属性加上,例如score: class Student(Person): def __init__(self, name, gender, score): super(Student, self).__init__(name, gender) self.score = score 一定要用 super(Student, self).__init__(name, gender) 去初始化父类,否则,继承自 Person 的 Student 将没有 name 和 gender。 函数super(Student, self)将返回当前类继承的父类,即 Person ,然后调用__init__()方法,注意self参数已在super()中传入,在__init__()中将隐式传递,不需要写出(也不能写)。
    查看全部
  • format_name(s)函数接收一个字符串,并且要返回格式化后的字符串,利用map()函数,就可以输出新的list。 参考代码: def format_name(s): return s[0].upper() + s[1:].lower() print map(format_name, ['adam', 'LISA', 'barT'])
    查看全部

举报

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

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