python进阶 廖雪峰(慕课网)
1.函数式编程
变量名可以指向函数,那么函数就可以通过一个变量传递给另一个函数或者变量。
map()函数:接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的list 并返回。(注意不改变原有的list)
reduce()函数:接收一个函数 f 和一个 list,传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值,reduce()还可以接收第3个可选参数,作为计算的初始值。
filter()函数:接收一个函数 f 和一个 list,函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
自定义排序函数:sorted()函数默认对list从小到大进行排列。sorted函数的作用是接受一个比较函数对序列进行排列,而这个比较函数会根据返回值是-1,就会把 x 排在 y 前面,返回值是1,就会把 x 排在 y 后面,返回值为0,就把两者并排。sorted()也可以对字符串进行排序,字符串默认按照ASCII大小来比较。
Python中返回函数:Python的函数不但可以返回int、str、list、dict等数据类型,还可以返回函数。 打印时需要注意返回值从而判断 print f 还是 print f()。
Python中闭包:内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。返回函数不要引用任何循环变量,或者后续会发生变化的变量。
Python中匿名函数: lambda x: x * x ,关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。strip()方法语法:str.strip([chars]);chars -- 移除字符串头尾指定的字符序列。
Python中decorator装饰器:
本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。
使用 decorator 用Python提供的 @ 语法,装饰器顾名思义就是起到装饰作用,即进行一些类似日志、运行时间的统计,其本质为内嵌套函数。
对于自适应任何参数定义的函数,可以使用Python的 *args 和 **kw,就这两个放在参数位置即可保证任意个数的参数总是能正常调用。
带参数的装饰器,带参数的log函数首先返回一个decorator函数,再让这个decorator函数接收my_func并返回新函数,之后再装饰器函数中进行例如log、计算运行时间等实现。Py
Python中偏函数:可以简化参数。当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。
Python中的模块
模块和包的概念:模块是一个Python文件,包是一个文件夹。Python包里面有一个_init._.py文件,用来和普通目录做区别。
导入模块:improt导入模块 from logging import log导入模块中的一个函数 from logging import log as logger给导入模块的函数起一个别名
动态导入:先尝试从cStringIO导入,如果失败了(比如cStringIO没有被安装),再尝试从StringIO导入。提高运行速度。
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
__future__:当新版本的一个特性与旧版本不兼容时,该特性将会在旧版本中添加到__future__中,以便旧的代码能在旧版本中测试新特性。from __future__ import division
安装第三方模块:pip www.pypi.python.org
面向对象编程
Python中初始化实例属性:_init__() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定
Python中访问限制:如果一个属性由双下划线开头(__),该属性就无法被外部访问。(__xxx__)除外
Python中创建类属性:如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有实例访问的类属性都是同一个!也就是说,实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。
Python中类属性和实例属性冲突:当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。注意:千万不要在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性。
Python中定义实例方法:实例的方法就是在类中定义的函数,它的第一个参数永远是 self,__init__(self, name)其实也可看做是一个特殊的实例方法
Python中方法也是属性: class 中定义的实例方法其实也是属性,它实际上是一个函数对象, types.MethodType(函数,实例,类) 把一个函数变为一个方法 p1.get_grade = types.MethodType(fn_get_grade, p1, Person)
Python中定义类方法:通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls
类的继承
Python中继承一个类:函数super(Student, self)将返回当前类继承的父类,即 Person ,然后调用__init__()方法,注意self参数已在super()中传入,在__init__()中将隐式传递,不需要写出(也不能写)
Python中判断类型:函数 isinstance(变量,类型) 可以判断一个变量的类型
Python中多态:需要深入学习
Python中获取对象信息:type() 函数获取变量的类型, dir() 函数获取变量的所有属性,dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数
定制类
Python中定义了__str__()和__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员。__repr__() = __str__()
Rational类虽然可以做加法,但无法做减法、乘方和除法,请继续完善Rational类,实现四则运算
Python的@score.setter是前一个@property装饰后的副产品。
Python如果要限制添加的属性,__slots__是指一个类允许的属性列表。
python进阶 廖雪峰(慕课网)的更多相关文章
- python爬虫:爬取慕课网视频
前段时间安装了一个慕课网app,发现不用注册就可以在线看其中的视频,就有了想爬取其中的视频,用来在电脑上学习.决定花两天时间用学了一段时间的python做一做.(我的新书<Python爬虫开发与 ...
- python全栈开发慕课网
前端 web框架: flask:简单.轻量.灵活性大 (官网,stck overflowa); 目录结构:配置,发布,资源,日志,测试... 前后端协作:整体发布,前后端分离发布 django:简单, ...
- Python开发简单爬虫 - 慕课网
课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序 课程目录 第1章 课程介绍 ...
- 【python】廖雪峰python教程学习--基础
No1: 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的 No2: 用r''表示''内部的字符串默认不转义 No3: 以'''开头,敲回车可以换行 No4: 布尔 ...
- python 3 廖雪峰博客笔记(三) 命令行模式与交互模式
python 的代码一般保存为 .py结尾的文本文件格式 比如 add.py 里写下如下内容 100 + 200 执行 add.py有两种方式: 1. 命令行方式:将python代码写入脚本中执行 p ...
- python 3 廖雪峰博客笔记(二) python解释器
python 解释器用于理解 python代码,存在多种python解释器 CPython 官方版本python解释器,用C语言开发,使用最广泛 IPython 基于CPython,在交互方式上有所增 ...
- python 3 廖雪峰博客笔记(一) python特性
python 是一种解释性语言,代码在执行时会一行一行翻译成CPU能理解的机器语言. python 的特点是简单优雅. python 的优点是 代码优雅 基础代码库丰富,包括网络.文件.GUI.数据库 ...
- 【总结整理】javascript进阶学习(慕课网)
数组 数组是一个值的集合,每个值都有一个索引号,从0开始,每个索引都有一个相应的值,根据需要添加更多数值. 二维数组 二维数组 一维数组,我们看成一组盒子,每个盒子只能放一个内容. 一维数组的表示: ...
- 编程挑战JavaScript进阶篇(慕课网题目)
编程挑战 现在利用之前我们学过的JavaScript知识,实现选项卡切换的效果. 效果图: 文字素材: 房产: 275万购昌平邻铁三居 总价20万买一居 200万内购五环三居 140万安家东三环 ...
随机推荐
- 安装luarocks安装驱动
yum install libtermcap-devel ncurses-devel libevent-devel readline-devel--安装lua前提条件 LuaSQL 可以使用 LuaR ...
- 搭建DHCP服务
DHCP服务流程 1.DHCP客户端初次接入网络时,会发送DHCP发现报文(DHCP Discover),用于查找和定位DHCP服务器. 2.DHCP服务器在接收到DHCP发现报文后,发送DHCP提供 ...
- iOS 批量上传图片的 3 种方法
AFNetworking 在去年年底升级到了 3.0.这个版本更新想必有很多好处,然而让我吃惊的是,它并没有 batch request 接口.之前的 1.x 版本.2.x 版本都实现了这个很常见的需 ...
- [经验] Java 服务端 和 C# 客户端 实现 Socket 通信
由于项目需要, 我需要通过 Java 开发的服务端对 C# 作为脚本语言开发的 unity 项目实现控制 话不多说, 直接上代码 首先, 我们先来构建服务端的代码, 服务端我们使用 Java 语言 i ...
- Codeforces1300C-Anu Has a Function
定义一个函数f(x,y), f(x,y) = x|y - y,给你一个数列,a1,a2,,an问如何排列能使f(f(f(a1,a2),a3),````,an)答案最大,我们将f(x,y)变形,就是f( ...
- Android LowMemoryKiller原理分析
copy from : http://gityuan.com/2016/09/17/android-lowmemorykiller/ frameworks/base/services/core/jav ...
- 夯实Java基础(十八)——泛型
1.什么是泛型 泛型是Java1.5中出现的新特性,也是最重要的一个特性.泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类. ...
- scrapy 实现mysql 数据保存
开始用scrapy 爬取数据的时候 开始用同步操作始终会报1064 的错误 因为 mysql 语法和导入的字段不兼容 尝试了 n 次之后 开始用 异步爬取 虽然一路报错 但是还是能把数 ...
- 解题报告+板子:luogu P3387 【模板】缩点
题目链接:P3387 [模板]缩点 缩点板子,所谓\(dp\)就是拓扑排序(毕竟可以重走边),像\(SPFA\)一样松弛就好,就是重边极其烦人,还加了排序(绝对自己想的,然鹅拓扑的思路不是). 下面上 ...
- AJAX的表单请求POST请求方式
表单数据的提交 action : 数据提交的地址,默认是当前页面 method : 数据提交的方式,默认是get方式 post: 把数据名称和数据值用=连接,如果有多个的话,那么他会把多个数据组合用& ...