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进阶 廖雪峰(慕课网)的更多相关文章

  1. python爬虫:爬取慕课网视频

    前段时间安装了一个慕课网app,发现不用注册就可以在线看其中的视频,就有了想爬取其中的视频,用来在电脑上学习.决定花两天时间用学了一段时间的python做一做.(我的新书<Python爬虫开发与 ...

  2. python全栈开发慕课网

    前端 web框架: flask:简单.轻量.灵活性大 (官网,stck overflowa); 目录结构:配置,发布,资源,日志,测试... 前后端协作:整体发布,前后端分离发布 django:简单, ...

  3. Python开发简单爬虫 - 慕课网

    课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序   课程目录 第1章 课程介绍 ...

  4. 【python】廖雪峰python教程学习--基础

     No1: 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的 No2: 用r''表示''内部的字符串默认不转义 No3: 以'''开头,敲回车可以换行 No4: 布尔 ...

  5. python 3 廖雪峰博客笔记(三) 命令行模式与交互模式

    python 的代码一般保存为 .py结尾的文本文件格式 比如 add.py 里写下如下内容 100 + 200 执行 add.py有两种方式: 1. 命令行方式:将python代码写入脚本中执行 p ...

  6. python 3 廖雪峰博客笔记(二) python解释器

    python 解释器用于理解 python代码,存在多种python解释器 CPython 官方版本python解释器,用C语言开发,使用最广泛 IPython 基于CPython,在交互方式上有所增 ...

  7. python 3 廖雪峰博客笔记(一) python特性

    python 是一种解释性语言,代码在执行时会一行一行翻译成CPU能理解的机器语言. python 的特点是简单优雅. python 的优点是 代码优雅 基础代码库丰富,包括网络.文件.GUI.数据库 ...

  8. 【总结整理】javascript进阶学习(慕课网)

    数组 数组是一个值的集合,每个值都有一个索引号,从0开始,每个索引都有一个相应的值,根据需要添加更多数值. 二维数组 二维数组 一维数组,我们看成一组盒子,每个盒子只能放一个内容. 一维数组的表示: ...

  9. 编程挑战JavaScript进阶篇(慕课网题目)

    编程挑战 现在利用之前我们学过的JavaScript知识,实现选项卡切换的效果. 效果图: 文字素材: 房产: 275万购昌平邻铁三居 总价20万买一居    200万内购五环三居 140万安家东三环 ...

随机推荐

  1. 计算机网络历史与基本概念&分层与参考模型(TCP/IP与OSI)&通信过程

    Definition: 计算机网络:使用单一技术相互连接的自主计算机的互联集合. 单台计算机独立自主(不受制于其他计算机),连接介质可以使光纤.铜线也可以是微波.红外.卫星. 互联网络(Interne ...

  2. Codeforces #617 (Div. 3) C. Yet Another Walking Robot

    There is a robot on a coordinate plane. Initially, the robot is located at the point (0,0)(0,0) . It ...

  3. Java记录4--string

    1.toString所有的类都默认自动继承了Objiect类 2.Object类中的toString方法返回的时类的名字和该哈希表码组成的一个字符串, System.out.println(类对象名) ...

  4. 【PAT甲级】1014 Waiting in Line (30 分)(队列维护)

    题面: 输入四个正整数N,M,K,Q(N<=20,M<=10,K,Q<=1000),N为银行窗口数量,M为黄线内最大人数,K为需要服务的人数,Q为查询次数.输入K个正整数,分别代表每 ...

  5. linux服务器上安装jdk8的两种方法

    这里介绍两种安装方式: yum安装(力荐) 从官网下载包安装 获得一台linux服务器 要在linux下安装jdk,首先你得先有一台linux服务器,虚拟机或者租一台都可以   yum安装jdk 在l ...

  6. matlab练习程序(龙格库塔法)

    非刚性常微分方程的数值解法通常会用四阶龙格库塔算法,其matlab函数对应ode45. 对于dy/dx = f(x,y),y(0)=y0. 其四阶龙格库塔公式如下: 对于通常计算,四阶已经够用,四阶以 ...

  7. 1. 使用 Docker 安装 Kong

    Create a Docker network $ docker network create kong-net Start Database $ docker run -d --name kong- ...

  8. linux上实现jmeter分布式压力测试(转)

    摘要:最近根据公司工作的需求,学习了一些压力测试的知识,目前,公司使用的是jmeter进行压力测试.下面就记录下近期的学习.我想将这次的博文分成三个部分:1.开始测试前的准备(测试环境的搭建)2.在一 ...

  9. 如何发布composer包

    1. 首先要有github仓库(其中必须要有 composer.json 配置文件) 2.关联 github 项目 提交成功 3.设置钩子以便同步更新 https://packagist.org/ab ...

  10. P1250 种树 题解

    题目描述 一条街道的一边有几座房子,因为环保原因居民想要在路边种些树,路边的居民被分割成 n 块,并被编号为 1…n.每块大小为一个单位尺寸并最多可种一棵树.每个居民想在门前种些树并指定了三个数b,e ...