---恢复内容开始---

_________________________________列表生成式_____________________

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的更多相关文章

随机推荐

  1. 如何在Github创建repository

    第一步:登陆Github,点击new repository 第二步:输入相应内容创建 第三步,创建完成,如下.

  2. Monkey之常用ADB命令(新猿旺学习总结)

    查看 adb 版本                                     adb version获取连接设备及状态                           adb dev ...

  3. MyPython

    目录 Python,那些不可不知的事儿 Python简介 Python环境搭建 从Hello World开始 Python中的数据类型 函数 模块 面向对象 More Python,那些不可不知的事儿 ...

  4. java 动态绑定 多态

    继承链中对象方法的调用规则:当前类-->父类-->爷类-->..-->祖先类(只能向上找,不能向下找)优先级:this.method(Obj) > super.metho ...

  5. 异常处理与网络基础中的tcp,udp协议

    # 异常处理: # 什么是异常?异常和错误的区别 # Error 语法错误 比较明显的错误 在编译代码阶段就能检测出来 # Iteration 异常 在执行代码的过程中引发的异常 # 异常发生之后的效 ...

  6. JS(JavaScript)的进一步了解2(更新中···)

    js数据类型 基本数据类型:string   undefined   null  boolean  number 引用数据类型  Object  array  function 二者的区别 基本数据类 ...

  7. android异步任务处理(网络等耗时操作)

    在实际应用中经常会遇到比较耗时任务的处理,比如网络连接,数据库操作等情况时,如果这些操作都是放在主线程(UI线程)中,则会造成UI的假死现象(android4.0后也不许放在UI线程),这可以使用As ...

  8. 安装Windows 和 Linux双系统(vmware) Centos7

    这里我安装的是Windows + Centos 7,如果是要安装Centos 6,步骤一样 一.安装Windows和Linux双系统需要先安装Windows然后安装Linux 解释:这里解释下为什么要 ...

  9. 网页中嵌入google地图

    一丶前言 大致需求:美国地图中标记分布的仓库图钉(鼠标经过显示地址详情),通过输入寄收件地邮编来在地图上定位位置添加图钉,将寄件地,选择的仓库,收件地图钉折线相连接,表示大致路线. 一丶google开 ...

  10. CycleGan论文笔记

    原文地址:https://arxiv.org/abs/1703.10593 背景——风格迁移 图片生成领域是GAN网络的天下,最近很多人将GAN网络应用到了图像风格迁移领域.这篇论文也是做image ...