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语言编写 ...
随机推荐
- fastjson数据格式转换 SerializerFeature属性详解
SerializerFeature属性 名称 含义 备注 QuoteFieldNames 输出key时是否使用双引号,默认为true UseSingleQuotes 使用单引号而不是双引号,默认为 ...
- Discuz 任务、道具、任务和验证类插件制作
一.广告类脚本位置:source/class/adv/adv_name.php语言包位置:source/language/adv/lang_name.php <?php class adv_na ...
- ffmpeg默认输出中文为 UTF-8
在使用ffmpeg 进行对音视频文件解码输出信息的时候会出现乱码. 从网上找到了说ffmpeg默认格式 为 utf-8 如果vs工程使用的的 Unicode 则需要将 utf-8转 Unicode 才 ...
- 怎样给oracle数据库的用户解锁
找到并进入运行窗口:(可以用windows+r快捷键哦)输入sqlplus命令:如图 进入新窗口后使用scott/tiger用户和密码进行登录会发现登录不成功:如图 这时我们可以使用syste ...
- LUA表的引用理解
--lua中引用类型都是分配在堆上的 --因此,我们在使用LUA的table时,可尽可能的使用表的引用,而不需要拷贝表里的元素 --比如,通过RPC协议传来一个表A,我们想要缓存这个表,只需要保存该表 ...
- asp.net webapi 参数绑定总结
首先必须得更正下自己一直以来对于get请求和post请求理解的一个误区:get请求只能通过url传参,post请求只能通过body传参. 其实上面的理解是错误的,翻阅了不少资料及具体实践,正确理解应该 ...
- 和大于S的最小子数组 · Minimum Size Subarray Sum
[抄题]: 给定一个由 n 个正整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组.如果无解,则返回 -1. 给定数组 [2,3,1,2,4,3] 和 s = 7, 子 ...
- LeNet
LeNet 模型特点 LeNet5诞生于1994年,由Yann LeCun提出,充分考虑图像的相关性.当时结构的特点如下: 1)每个卷积层包含三个部分:卷积(Conv).池化(ave-pooling) ...
- CRC32加密算法原理
[转]:https://blog.csdn.net/android_mnbvcxz/article/details/78902737
- eigen安装
https://blog.csdn.net/liuxiaoheng1992/article/details/54410148