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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 一个.py文件就是python中的一个模块。 引入模块时:import 模块名 包是将模块包含起来的一个作用,引入:import 包名.模块名.函数 如何区分包和普通目录: 包下面有个__init__.py,每层都必须要有,只有这样Python才会将它当做包来处理
    查看全部
  • 旧版本要使用新版本功能时使用 __future__ 模块 【from __future __ import 功能】 Python的新版本会引入新的功能,但是,实际上这些功能在上一个老版本中就已经存在了。要“试用”某一新的特性,就可以通过导入__future__模块的某些功能来实现
    查看全部
  • def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum 注意: 发现没法把 lazy_sum 移到 calc_sum 的外部,因为它引用了 calc_sum 的参数 lst。 像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。
    查看全部
    0 采集 收起 来源:python中闭包

    2017-09-12

  • 拿到一个变量 除了用 isinstance() 判断它是否是某种类型的实例 可以用 type() 函数获取变量的类型,它返回一个 Type 对象: 可以用 dir() 函数获取变量的所有属性: dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数了: getattr(s, 'name') # 获取name属性 'Bob' >>> setattr(s, 'name', 'Adam') # 设置新的name属性
    查看全部
  • 看下图: http://img1.sycdn.imooc.com//54daf037000142d207580552.jpg 像这样,D 同时继承自 B 和 C,也就是 D 拥有了 A、B、C 的全部功能。多重继承通过 super()调用__init__()方法时,A 虽然被继承了两次,但__init__()只调用一次: >>> d = D('d') init A... init C... init B... init D... ,Python的网络服务器有TCPServer、UDPServer、UnixStreamServer、UnixDatagramServer,而服务器运行模式有 多进程ForkingMixin 和 多线程ThreadingMixin两种。 要创建多进程模式的 TCPServer: class MyTCPServer(TCPServer, ForkingMixin) pass 要创建多线程模式的 UDPServer: class MyUDPServer(UDPServer, ThreadingMixin): pass 如果没有多重继承,要实现上述所有可能的组合需要 4x2=8 个子类。
    查看全部
  • 返回函数可以把一些计算延迟执行。 def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum # 调用calc_sum()并没有计算出结果,而是返回函数: >>> f = calc_sum([1, 2, 3, 4]) >>> f <function lazy_sum at 0x1037bfaa0> # 对返回的函数进行调用时,才计算出结果: >>> f() 10 由于可以返回函数,我们在后续代码里就可以决定到底要不要调用该函数。
    查看全部
  • 动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。 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()。 'r'是防止字符转义的 如果路径中出现'\t'的话 不加r的话\t就会被转义 而加了'r'之后'\t'就能保留原有的样子 在字符串赋值的时候 前面加'r'可以防止字符串在时候的时候不被转义 原理是在转义字符前加'\' 编码:把一个Python对象编码转换成Json字符串 json.dumps() 解码:把Json格式字符串解码转换成Python对象 json.loads()
    查看全部
    1 采集 收起 来源:python中多态

    2017-09-12

  • 函数isinstance()可以判断一个变量的类型,既可以用在Python内置的数据类型如str、list、dict,也可以用在我们自定义的类,它们本质上都是数据类型。
    查看全部
  • 一定要用super().__init__()去初始化父类。函数super()将返回当前继承的父类,然后调用__init__()方法,注意self参数已在super()中传入,在__init__()中将隐式传递,不需要写出 super("子类名",self).__init__([从父类继承的属性参数]):用于初始化父类。继承而来的子类将没有父类定义的实例方法中所具有的属性
    查看全部
  • 继承特点: 1、总是从某个类继承,没有合适的类时使用object类继承 2、调用super().__init__方法(初始化父类) 如Student类从父类继承name和gender:super(Student,self).__init__(name,gender)
    查看全部
  • 1.只需使用一个模块: import 模块 2.需要使用某模块的某几个函数 from 该模块 import 函数1,函数2... 3.避免名字冲突: (1) import 模块1,模块2 print 模块1.函数1(参数) print 模块2.函数1(参数) (2) from 模块1 import 函数1 from 模块2 import 函数1 as 别名 print 函数1(参数) print 别名(参数)
    查看全部
  • 偏函数之进制转换: 1. int('12345',base=8) 5349 解释:即括号内第一个参数是需要被转换的数,第二个参数指第一个参数的进制数。 结果均转化为十进制数。 即八进制数12345转换为十进制数为5349。其他进制类似 2.functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了
    查看全部
    0 采集 收起 来源:python中偏函数

    2017-09-12

  • 访问 p1.address 时,优先查找实例属性,返回'China'。 访问 p2.address 时,p2没有实例属性address,但是有类属性address,因此返回'Earth'。 可见,当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。 当我们把 p1 的 address 实例属性删除后,访问 p1.address 就又返回类属性的值 'Earth'了: del p1.address print p1.address # => Earth
    查看全部
  • @语法:为了简化装饰器的调用。 @new_fn def f1(x) return x*2 等价于: def f1(x): return x*2 f1=new_fn(f1)
    查看全部
  • 闭包定义:内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况。 特点:返回的函数还引用了外层函数的局部变量,要正确使用闭包,需确保引用的局部 变量在函数返回后不能变。 定义相关例子: def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum 代码中可知不可以把 lazy_sum 移到 calc_sum 的外部,因为它引用了 calc_sum 的参数 lst
    查看全部
    0 采集 收起 来源:python中闭包

    2017-09-12

举报

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

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