Python3.5 学习四
装饰器
定义:本质是函数,装饰其他函数,即为其他函数添加附加功能的
原则: 1 不能修改被装饰函数的源代码
2 不能改变被装饰函数的调用方式(对于被装饰函数来说完全透明,不会受影响)
实现装饰器功能的知识储备:
1 函数即变量
匿名函数 calc=lambda x:x*3 使用完即回收
2 高阶函数
定义:a 把一个函数名当做实参传给另一个函数 (满足装饰器原则1)
b 返回值中包含函数名 (返回值中包含函数名)
举例:请见pycharm的练习代码
3 嵌套函数
在一个函数体内用def去声明另一个函数,而不是仅仅去调用另一个函数
4 高阶函数+嵌套函数实现装饰器的功能
思考:用以上两个知识点,怎么写一个装饰器
示例:import timedef timer(func):
def deco(*args,**kwargs):
start_time = time.time()
func(*args,**kwargs)
end_time = time.time()
print("the func run time is %s" % (end_time - start_time), "s")
return deco @timer #= test1=timer(test1) deco=test1 deco(*args,**kwargs)=test1(*args,**kwargs)
def test1():
time.sleep(3)
print("in the test1")
@timer #= test2=timer(test2) deco=test2 deco(*args,**kwargs)=test2(*args,**kwargs)
def test2(name):
time.sleep(3)
print("in the test2,the name is %s" % name) test1()
test2("huhu") 如果装饰器声明需要有一个参数作为变量分类,则装饰器代码的外层再嵌入一层,传参func,装饰器的实参对应的是声明时的值即可。 协程并发 消费者生产者模型实例,详见Pycharm代码 我们已经知道,可直接作用于for循环的数据类型有:
A list、tuple、dict、set、str
B generator 包括生成器和带yield的generator function
这些可直接作用于for循环的对象,统称为可迭代对象:Iterable
可以使用Instanse()方法判断一个对象是否是Iterable对象
而生成器,不但可以被for循环,还可以被next()对象不断循环返回下一个值 迭代器
定义:可以被next()调用并不断返回下一个值的对象,我们叫做迭代器:Iterator
生成器都是Iterator对象,而list、tuple、dict、str等都不是Iterator对象
使用iter()可以变为迭代器 小结:
1 凡是可作用于for循环的对象,都是可迭代对象
2 凡是可作用于next()的对象,都是迭代器
3 非迭代器的可迭代对象,都可以通过iter()函数将其变为迭代器对象
4 Python3,本质上for循环的实现,其实本质就是一个迭代器,通过不断调用next()来实现的
文件的读取,for line in f:也是一种迭代器的实现方式,如果用f.readlines()则生成一个list,占用大量系统资源
而Python2里,f.xreadlines()和xrange(10)都是一种迭代器,只能用next()方法调用而动态计算生成下一个的值。 内置方法:
abs 取绝对值
all 判断可迭代对象中的每个元素,只要有一个为False,则返回False,否则返回True
any 同上,相反只要有一个为True,则返回True,否则返回False
ascii 列表转字符串
bin 数字转二进制
bool 判断真假
bytearray 字节数组格式,可单字节修改
bytes 字节格式
callable 判断是否可被当做方法调用
chr 返回ascII对应的值
compile 将字符串编译成指定执行格式的代码
complex 复数
dict 字典
dir 看对象有什么方法
divmod 返回商和余数
enumerate 枚举
eval 简单的字符串公式计算得出结果,即为取字符串的引号之间的内容并简化计算。
复杂的只能用exec计算
fliter filter(lambda n:n>5,range(10))
(匿名函数:只支持三元运算等简单函数的写法)
map map(lambda n:n*2,range(10))
reduce 详见代码
float 浮点
format 格式化
frozenset 不可变集合
getattr (面向对象时再讲)
gloables 返回当前程序中所有变量的字典 hash 散列值 后台有一种映射关系,将无序数据存成有序映射,便于快速折半查找检索方式的适用,字典的检索就是这种方式
这种映射关系叫做HASH.md5也是一种较复杂的hash算法
比较两个文件是否内容相同,最快的方式是转成md5,然后比较md5,也是用hash方式快速比较 help 方法的帮助
hex 数字转16进制
input
int
isinstance
issubclass
len
locals 本地变量的字典形式
max
min
next 相当于迭代器中的__next__
oct 转8进制
open
ord
pow
range
repr 用字符串表示对象
reversed 反转
round 保留小数
set 集合
setattr 面向对象会讲
slice 切片
sorted 排序
字典按照默认key排序:sorted(a.items())
指定按照value排序:sorted(a.items(),key=lambda x:x[1])
staticmethod
str
sum
super
tuple
type python数据类型的祖师爷
vars 返回一个对象的属性名
zip 一一对应组合两个列表 zip按数量少的进行对应,map按数量多的进行对应 #import decorator等效于下列方法:
__import__('decorator') json序列化:
Json用于所有开发语言之间的数据对接
默认只支持简单的数据类型的转换 pickle:
可支持所有类型的转换
其转换成二进制,请注意。
dumps()
loads() 注意:永远只Dump一次;只Load一次
每次都分开生成一次的记录文件 软件目录结构规范
/bin
/conf
/core
/doc 作业《购物商城+ATM》太难,以后再做吧~~~
Python3.5 学习四的更多相关文章
- 【Mac + Appium + Python3.6学习(四)】之常用的IOS自动化测试API总结
环境: Appium:1.9.1 Appium-desktop:1.7.1 Xcode:10.0 IOS:iPhone5S(10.3.3) Mac:10.13.6 ①获取手机屏幕size:长.宽 &l ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- 从零开始学习PYTHON3讲义(四)让程序更友好
<从零开始PYTHON3>第四讲 先看看上一讲的练习答案. 程序完成的是功能,功能来自于"程序需求"("需求"这个词忘记了什么意思的去复习一下第二讲 ...
- python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法
python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...
- python3.4学习笔记(四) 3.x和2.x的区别,持续更新
python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...
- python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容
python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...
- python3.4学习笔记(二十五) Python 调用mysql redis实例代码
python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...
- python3.4学习笔记(三) idle 清屏扩展插件
python3.4学习笔记(三) idle 清屏扩展插件python idle 清屏问题的解决,使用python idle都会遇到一个常见而又懊恼的问题——要怎么清屏?在stackoverflow看到 ...
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容
python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...
随机推荐
- 浅析JavaScript中的typeof运算符
对JavaScript中的typeof运算符进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助. 如果typeof的运算符是数字.字符串或者布尔值,它返回的结果就是"numb ...
- Spring Boot 16 条最佳实践
Spring Boot是最流行的用于开发微服务的Java框架.在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践.这些内容是基于我的个人经验和一些熟知的Sp ...
- s2选择框的全选和反选jQuery
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CentOS 7 调整 home分区 扩大 root分区
总体过程: 把/home内容备份,然后将/home文件系统所在的逻辑卷删除,扩大/root文件系统,新建/home ,恢复/home内容 1.查看分区 df -h 2.备份home分区文件 tar c ...
- MYSQL 存储过程通用
返回随机时间 函数 )) ) CHARSET utf8 BEGIN )); -- 随机天数 60天以内随机天数 )); -- 随机小时 ));-- 随机分 ));-- 随机秒 ); IF type = ...
- sort_contours_xld算子的几种排序方式研究
算子sort_contours_xld算子有5种排序方式,即: 'upper_left': The position is determined by the upper left corner of ...
- Linux --centos7 开机启动设置
以Linux下指定sun用户在linux开机时执行/home/sun/startrun.sh为例: 以root登录linux 执行vi /etc/rc.d/rc.local 在文档末尾添加一行语句:s ...
- C语言日志处理
一.简介 zlog是一个高可靠性.高性能.线程安全.灵活.概念清晰的纯C日志函数库,在效率.功能.安全性上大大超过了log4c,并且是用c写成的,具有比较好的通用性. 二.安装 下载 https:// ...
- css控制两个表格的边线重合
控制两个表格的边线重合 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...
- Nuget安装 Identity组件。
Install-Package Microsoft.AspNet.Identity.EntityFramework –Version 2.0.0(2.2.1) Install-Package Micr ...