那些年被我坑过的Python——山外有山(第四章)

装饰器:

定义:

  本质是函数,(装饰其他函数)就是为其他函数添加附加功能
原则:
  1.不能修改被装饰的函数的源代码
  2.不能修改被装饰的函数的调用方式

优点:
  装饰器带来的最直观的好处:减少对函数的细化修改,批量增加新功能

实现装饰器必备知识:
1、函数即“变量”

  函数的原理与变量引用相似,都是将一个命名于内存对象进行映射
2、高阶函数
  满足下列两个条件之一的则为高阶函数:
  a、把一个函数名当作实参传递给另一个函数(在不修改被装饰函数代码的情况下为它增加功能)
  b、一个函数返回值中包含另一个函数名(不修改函数的调用方式)
3、嵌套函数
  具有局部变量的特性,即在函数内部继续使用def定义新的子函数;
4、高阶函数 + 嵌套函数 => 装饰器

  最简单的装饰器示例:

1 def auth(_func):
2     def decorate(*args, **kwargs):
3         <需要附加的功能>
4         result = _func(*args, **kwargs)
5         <需要附加的功能>
6         return result
7
8     return decorate

Python的内存回收机制:
  1、当内存对象没有变量引用时候,会在一段时间内将内存对象回收
  2、取消变量引用可以使用del关键词,实际上是实现了变量名与内存对象之间的映射关系

生成器(generator):
  eg.( i**2 for i in range(10) )返回结果为一个生成器
  1、只有在调用的时候才会生成相应的数据
  2、只能记录当前的位置及数据,而且只能向后,不能向前
  3、获取下一个数据的方法是调用:__next__()方法

  迭代器  VS   可迭代对象(Iterator VS   Iterable)
  1、迭代器是指可以调用next()方法的对象
  2、迭代对象是指可以使用for ... in ...: 遍历的对象
  3、迭代对象可以通过iter()方法转换为迭代器
  4、迭代器一定是迭代对象
  5、但迭代对象不一定是迭代器,可以通过iter()转换

匿名函数的使用:

  匿名函数,又称为:lambda 函数。这段代码显示如何使用 lambda 函数:

f = lambda x : 2 * x
print f(3)

  一个返回语句是未使用过 lambda 函数,它总是返回一些东西。 lambda 函数可以包含 if 语句:

f = lambda x: x > 10
print(f(2))
print(f(12))

map函数中调用lambda:

  映射的定义是 map(函数,可迭代)。它适用于一个函数可重复每一个项目。我们可以用 map(),以与列表中的lambda函数:

list = [1,2,3,4,5]
squaredList = map(lambda x: x*x, list)
print(squaredList)

  使用 lambda 函数任何地方,都可以使用正常的函数来代替。lambda 函数不是一个语句,它是一个表达式。lambda 函数不支持的语句块。

filter函数中调用lambda:

  过滤器(函数,迭代器)创建一个新的列表的元素,函数返回True。示例:

list = [1,2,3,4,5,6,7,8,9,10]
newList = filter(lambda x: x % 2 == 0, list)
print(newList)

  返回的列表将返回仅包含其中lambda表达式的元素 “lamba x: x % 2 == 0”  的值为:true.

reduce 函数中调用lambda:

  reduce 函数, reduce(function, iterable) 适用于两个参数累积到可迭代的项目,由左到右。示例:

list = [1,2,3,4,5]
s = reduce(lambda x,y: x+y,  list)
print(s)

  在这种情况下,表达始终为:true,因此,它简单地概括了列表的元素。另一个例子:

list = [10,6,7,5,2,1,8,5]
s = reduce(lambda x,y: x if (x > y) else y, list)
print(s)

内置函数:

1、abs:返回绝对值
2、all: 遍历一个迭代器,如果都为空,或者每个迭代元素都会true,则返回ture,等价于:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True 


3、any:与all函数作用相反,如果任何迭代的一个元素为ture,或者为空,则返回false

4、ascii: 转成ascii码

5、bin:转一个整数得到一个二进制的字符串

6、bool:转换一个值,得到一个bool类型

7、bytearray:返回一个字节数据

8、bytes: 根据一个编码转换成字节形式

9、callable: 回调函数,如果返回false,则代表回调失败,如果为true,它也仍然可能失败

10、chr:返回一个整形数字的Unicode形式,比如97返回a

11、classmethod:为函数返回一个类方法

12、compile:编译一个资源进入一个代码里或一个AST对象

13、complex:创建一个复数的表达式

14、 delattr:移除一个对象的属性

15、dict:创建一个词典结构(类似Map)

16、dir:如果没有参数返回本文件的路径,如果有参数返回一个对象的属性列表

17、divmod:两个整形数字做相除

18、enumerate:返回一个枚举对象

19、eval:执行一个表达式,或字符串作为运算

20、exec:支持python代码的动态执行

21、filter:在一个元组里面过滤出目标字符串

22、float:字符串转成浮点类型

23、format:格式化字符串

24、frozenset:返回一个新的克隆对象

25、getattr:获取对象的一个方法的结果,类似于x.foobar

26、 globals: 返回当前全局的字典表

27、hasattr:判断是否有某个属性值,返回true代表有

28、hash:取一个对象的hash值

29、help:调用系统内置的帮助系统

30、hex:转换一个整形数字,为小写的十六进制

31、id: 返回一个对象的唯一标识值

32、input:从控制台读取数据

33、int,转换字符串为int型

34、isinstance:判断一个对象是否为该类的一个实例

35、issubclass:判断一个类是否为另一个类的子类

36、iter: 返回一个可迭代的对象

37、len: 返回一个字符串的长度

38、list:打印一个集合对象

39、locals:更细并返回一个词典的本地标志表

40、map:返回一个可迭代的map函数

41、max:返回集合里面最大的一个或多个值

42、memoryview:返回一个python对象的内部数据

43、min:返回集合里面最小的一个或多个值

44、next:返回集合里面的下一项数值

45、object:返回一个新的对象,是所有的类的父类

46、oct:返回一个整形为八进制类型

47、open: 打开一个系统文件

48、ord:得到一个字符串或unicode类型的ascii数值

49、pow:返回的数字n次方值

50、print:打印输出语句

51、property:返回一个属性值

51、range:产生一个数字序列

52、repr:返回一个字符串可打印对象

53、reversed:反转一个集合

54、round:返回一个四舍五入的浮点数

55、set:返回一个新的set对象

56、setattr:设置一个新的属性值

57、slice:返回一个集合的区间集合

58、sorted:对一个集合进行排序

59、staticmethod:声明返回一个静态方法

60、str:将数字类型转换为字符串

61、sum:对一个集合里面的值求和

62、super:返回一个代理父类的对象

63、tuple:返回一个不可变的元组

64、type:返回一个对象的类型

65、vars:返回对象的属性

66、zip:返回组合一个对等的项

67、__import__: 比import高级的导入方法


python里面的内置常量


1、False:bool类型的值

2、True:bool类型的值

3、None:对象的为null

4、NotImplemented: 不是其他类型的实现

5、Ellipsis:省略

6、__debug__:debug选项

7、quit,exit,copyright,license,credits

其他小知识点:

1、获取绝对路径:

os.path.abspath()

2、获取上级目录

os.path.dirname()

3、获取函数名:

func.__name__

或者

getattr(func,__name__)

 

时间: 2024-08-07 18:04:35

那些年被我坑过的Python——山外有山(第四章)的相关文章

《python for data analysis》第四章,numpy的基本使用

<利用python进行数据分析>第四章的程序,介绍了numpy的基本使用方法.(第三章为Ipython的基本使用) 科学计算.常用函数.数组处理.线性代数运算.随机模块-- # -*- coding:utf-8 -*-# <python for data analysis>第四章, numpy基础# 数组与矢量计算import numpy as npimport time # 开始计时start = time.time() # 创建一个arraydata = np.array([[

流畅python学习笔记:第十四章:迭代器和生成器

迭代器和生成器是python中的重要特性,本章作者花了很大的篇幅来介绍迭代器和生成器的用法. 首先来看一个单词序列的例子: import re re_word=re.compile(r'\w+') class Sentence(object):     def __init__(self,text):         self.text=text         self.word=re_word.findall(text)     def __getitem__(self, item):   

Python基础教程(第十四章 网络编程)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5538341.html______ Created on Marlowes 本章将会给读者展示一些例子,这些例子会使用多种Python的方法编写一个将网络(比如因特网)作为重要组成部分的程序.Python是一个很强大的网络编程工具,这么说有很多原因,首先,Python内有很多针对常见网络协议的库,在库顶部可以获得抽象层,这样就可以

Python 3标准库 第十四章 应用构建模块

Python 3标准库 The Python3 Standard Library by  Example -----------------------------------------第十四章     应用构建模块-----------------------------14.1  argparse:命令行选项和参数解析----------------------------- argparse模块 14.1.1  建立解析器 14.1.2  定义参数 argparse模块 14.1.3 

《Python网络编程基础》第四章 域名系统

域名系统(DNS) 是一个分布式的数据库,它主要用来把主机名转换成IP地址.DNS以及相关系统之所以存在,主要有以下两个原因: 它们可以使人们比较容易地记住名字,如www.baidu.com. 它们允许服务器改变IP地址,但是还用同样的名字. 作为一个例子,让我们看一下查询    www.baidu.com  首先,您的程序会和操作系统配置文件指定的本地名称服务器通信.这个服务器是一个递归的名称服务器,它收到请求并以适当的方式传递下去,它会为您完成大量工作. 递归服务器做的第一件事情是询问.co

《Python 学习手册4th》 第四章 介绍Python对象类型

''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容(每天看42页内容,可以保证月底看完此书) ''' 摘要 Python程序可以分解成模块.语句.表达式和对象: 程序由模块构成: 模块包含语句: 语句包含表达式: 表达式建立并处理对象. 一. 为什么使用内置类型  #了解即可 内置对象使程序更容易编写 内置对象是扩展的组件 内置对象往往比定制的数据结构更高效 内置对象是语言的标准的一部分 二. Py

head first python菜鸟学习笔记(第四章)

1,p124,错误:NameError: name 'print_lol' is not defined 要想文件内如图显示,需要把调用BIF print()改为调用第二章的nester模块中的print_lol()函数,因此需要导入nester模块. 首先需要修改第二章nester模块中的print_lol()函数并更新该模块,更新方法如图: 然后在sketch.py中调用print_lol()函数. 1 ''' 2 修改时间:0919 3 修改内容:把调用BIF print()改为调用第二章

通过游戏学python 3.6 第一季 第四章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码 可复制直接使用 娱乐 可封装 函数

1 #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码 2 3 import random 4 secrst = random.randint(1,99) 5 6 number = secrst 7 8 amount = random.randint(3,8) 9 print('本次游戏次数为',amount,'次') 10 11 count=0 12 while count<=amount: 13 try: 14 conversion=input('请猜数字') 15 guess=in

《简明Python编程》核心笔记(1~5章)

2014年8月20日 <简明Python编程>核心笔记  (1~5章) 昨天和今天两天时间里,把<简明Python编程>这一本书学完了,包括书上的代码.现把核心笔记记录下来,以便以后复习. 第一章 简介 Python语言是少有的一种可以称得上即简单又功能强大的编程语言.你将惊喜地发现Python语言是多么地简单,它注重的是如何解决问题而不是编程语言的语法和结构. Python的特点: 简单 易懂 免费.开源 高层语言:高级语言 可移植性:可以移植在许多平台上.包括Linux.Win