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. keil Bulid Ouput窗口中PROGRAM SIZE项的具体含义

    在Keil中编译工程成功后,在下面的Bulid Ouput窗口中会输出下面这样一段信息:   Program Size: Code=6320  RO-data=4864  RW-data=44  ZI ...

  2. underscore.js -2009年发布的js库

    2009 Underscore.js 0.1.0发布 Underscore一个JavaScript实用库,提供了一整套函数式编程的实用功能,但是没有扩展任何JavaScript内置对象.它是这个问题的 ...

  3. 浏览器输入URL后HTTP请求返回的完整过程

    图:

  4. 通过修改select的value值

    1 <input type="button" id="btn" value="按钮"/> 2 <select name=& ...

  5. 2020.2.19 restful的学习

    restful Api 设计要素 3-8 如何设计Restful Api 资源路径(url),HTTP动词,过滤信息(做分页),状态码,错误处理,返回结果    3-9    初始化运行参数 3-10 ...

  6. c-指针的理解

    c-指针的理解 最近在学习MFC,其中的代码有点看的不是很深刻,究其原因还是对c语言中的指针理解的不是很好,下面详细的给大家介绍一下指针,如有不当之处,欢迎各位读者指正. 一.指针的概念 C语言里,变 ...

  7. Python用户界面编程PyQt5的四种的布局方式

    1.QT是C++编写的跨平台GUI库,GUI是指桌面程序应用. 2.开发基于pyqt5的桌面应用程序必须要使用两个类Qapplication和Qwidget类,都在PyQt5.Qt.widgets里面 ...

  8. Android 自定义PopWindow完整代码

    1.布局文件的编写 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:and ...

  9. RabbitMq学习笔记——RabbitMQ C的使用

    1.需要用到的参数: 主机名:hostname.端口号:port.交换器:exchange.路由key:routingkey .绑定路由:bindingkey.用户名:user.密码:psw,默认用户 ...

  10. 《算法图解》[美] Aditya Bhargava(作者)epub+mobi

    内容简介 本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量.书中的前三章将帮助你打下基础,带你学习二分查找.大O表示法.两种基本的数据结构以及递归 ...