week4_1
---恢复内容开始---
_________________________________列表生成式_____________________
a = [a*2 for a in range(10)]
_________________________________生成器___________________________
生成器是一个返回迭代对象的函数
生成器的两种方式:
1:
生成了一个列表生成器,但在没有调用的时候仅仅只有一个算法,并不会占用内存,但是不能进行切片处理,此外他每一次生成调用
只会有一个值,前面的值自动删除
a = (a*2 for a in range(10))
a.__next__
next(i)
每次只走一次
2:将print(b) 改为 yield b
-------------斐波那契生成器
def fib(max):
a,b,n= 0,1,0
while n<max:
yield b #yield生成器标志之一,输出 b
a,b = b,a+b
n +=1
------------吃包子做包子
import time
def consumer(name):
print('%s 吃包子啦'% name)
while True:
baozi = yield
print('包子 [%s] 来啦,被[%s] 吃啦!!'%(baozi,name))
return 0 def producer():
c = consumer('A')
c_1 = consumer('B')
c.__next__
c_1.__next__
for i in range(5):
time.sleep(1)
c.send(i)
c_1.send(i)
print(‘包子做了俩,你们一人一个’)
_______________________________________迭代器__________________________________
一类是集合数据类型,如list、tuple、dic、set、str等
一类是generater,包括生成器和带yield的generater function
这些可以直接作用于for循环的对象统称为可迭代对象:Iterable
可以使用isinstance()判断一个对象是否是Iterable对象 可以被next()函数调用并不断返回下一个值的对象称为迭代器 Iterator
运用iter(),可以将迭代对象转变为迭代器
Iterator甚至可以表示所有自然数的集合,然而list等迭代对象必须有开头、结尾
在python3中range就是迭代器
from collections import Iterator,Iterable
a = [1,2,3,4,5]
print(isinstance(a,Iterable)) >>>>>True
print(isinstance(iter(a),Iterator)) >>>>>>True
-----------------------------------------------------装饰器--------------------------------------------------------
——---———————装饰器前戏——————————
装饰器:
定义:本质是函数,(装饰其他函数)就是为其他函数添加附加功能
原则: 1、不能修改被装饰函数的源代码
2、不能修改被装饰函数的调用方式
意思就是,装饰器对于函数来说是完全透明的 实现装饰器需要的知识储备:
1、函数即“变量”
2、高阶函数(满足下列两个其中之一即为高阶函数)
定义:1、将一个函数名作为实参传给另外一个函数(在不修改被装饰函数的源代码的情况下为其添加功能)
2、返回值中包含函数名(不修改函数的调用方式)
3、函数嵌套
定义:在一个函数的函数体内用def去声明一个新的函数 高阶函数 + 函数嵌套 -----》 装饰器
import time
def timer(func):
def wapper(*args,**kwargs):
print('you are right')
return func(*args,**kwargs)
return wapper @timer # bar = timer(bar) = wapper
def bar():
time.sleep(1)
print('in the bar')
return 'FakeZIO'
@timer
def bar1(name,age):
time.sleep(2)
print('in the bar are %s and %s'%(name,age))
return 0
bar()
print(bar())
___________________装饰器高潮________________
def auth(auth_type):
def out_wapper(func):
def wapper(*args,**kwargs):
if auth_type == 'local':
username = input('Username:').strip()
password = input('Password:').strip()
if user == username and pawd = password:
print('\033;[32;1mUser has passed authentication\033[0m')
return func(*args,**kwargs)
elif auth_type == 'lpda':
print('不会玩啊')
return wapper
retur out_wapper
@auth(auth_type:'local')
def zio():
print('kamlada zio')
zio()
--------------------------------------------内置函数——--------------------------------------
详情请看:python官网
----------------------------------json and picklle 序列化与反序列化---------------------------------
json 主要用于不同语言之间的数据交互,但是json只能进行基础的数据交互,pickle可以进行高级的数据交互,两个用法接近一致
但是pickle输出是二进制,所以要用rb,wb,ab,并且只能在python本语言中能使用
#####在一个程序中,dump一次load一次,要么就dump多个文件
json/pickle.dump(info,f)
json/pickle.load(f)
with open('text.txt','wb') as f:
pickle.dump(info,f)# == f.write(pickle.dumps(info_1))
week4_1的更多相关文章
随机推荐
- React Hooks (React v16.7.0-alpha)
:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdow ...
- VB代码收集
1.随机获取5位验证码? 需求: 创建一个Label1:名称为随机验证码生成 创建一个Label2:名称为为空,属性BorderStyle=1 创建一个CommandButton:名称为获取随机码 代 ...
- Java第一、二次实训作业
1.有1.2.3.4共4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去掉不满足条件的排列. 代码 pack ...
- 动态令牌验证遇到的问题(判断用户长按backspace键)
因为最近负责泰康项目的前端工作,他们的登录需要进行安全验证,也就是所谓的双因素验证,即在OA平台登录过后,还需要安全部门发送安全令牌进行验证.令牌验证效果如下: 主要功能有:1.默认第一项focus. ...
- Linux 系统调用(system call)
1 系统调用:(SYSTEM CALL) 操作系统(operating system)内核中有一组实现系统功能的过程,系统调用就是对上述过程的调用.程序员利用系统调用,向OS提出服务请求,由OS代为完 ...
- Excel导出采用mvc的ExcelResult继承遇到的问题
ExcelResult继承:ViewResult(只支持excel版本2003及兼容2003的版本)通过视图模板生成excel /// <summary> /// ms-excel视图 / ...
- Web 端异步下载文件
Web 端异步下载文件 实现文件异步下载: 在服务端无法返回文件,或发生异常时给予提示. JavaScript: 服务端返回的JSON对象形如: { code:200, msg:'下载成功|未找到指定 ...
- jQuery拼接HTML标签元素
1. append & appendTo 的功能均为:在被选元素结尾(仍在元素内部)插入指定内容,但是内容和选择器的位置不同 (1) append()方法: //在id为element元素内部 ...
- 20165306 Exp0 Kali安装 Week1
20165306 Exp0 Kali安装 Week1 实验要求 Kali 下载 安装 网络 共享 软件源 步骤一.下载Kali 根据网址https://www.kali.org/ 下载kali 点击 ...
- Vue-admin工作整理(十四):Vuex和双向绑定
概述,普通的直接通过input修改值然后取是不符合vue的规格的,所有数据定义和传递必须通过actions或者mutation来做 思路:通过在mutation层对字段进行定义值,在store中通过v ...