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

_________________________________列表生成式_____________________

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. op 和 oo 的区别

    本是之前一位前辈留下的问题,因为我不是程序出身,略懂一些代码,后又查了很多人的博客,问了周围搞开发的朋友,得出以下结论: 有人这么形容OP和OO的不同:用面向过程的方法写出来的程序是一份蛋炒饭,而用面 ...

  2. SQL查询数据时报错

    在开发过程中如果查询报如下的错误: org.springframework.jdbc.UncategorizedSQLException: Error attempting to get column ...

  3. iOS日期问题

    由于项目需要,需要获取去设备的当前时间,组成一个字符串,比如 2018年9月15日 15点30分30秒,需要转换成字符创:180915153030. 很简单的一个需求,于是就使用了日期格式话当前时间: ...

  4. vscode技巧之代码规范editorconfig

    使用代码片段一键初始化editorconfig样式 第一步,选择文件 第二步,在首选项中选择代码片段 第三步,搜索框中键入properties,并enter键选择进入该文件 第四步,键入下面的代码 { ...

  5. 【Java基础】浅谈常见设计模式

    Num1:单例模式 基本概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 常见写法: 懒汉式 public class Singleton { /* 持有私有静态实例,防止被引用,此处赋值 ...

  6. js备战春招の四のDOM

    通过js查找html元素的三种方法: 1.通过id找到html元素. 2.通过标签名找到html元素. 3.通过类名找到html元素. DOM HTML document.write(); 直接写入h ...

  7. ActiveReports报表控件 V13 正式发布,提供在线报表设计和自适应报表布局

    重磅消息, ActiveReports V13 正式发布!本次更新 ActiveReports 将给您带来全新的报表设计体验:提供在线报表设计器.提供响应式布局和屏幕尺寸自适应能力.提供全新的图表…… ...

  8. java基础之集合框架--使用ArrayList类动态 存储数据

    一.ArrayList是List接口下的一个实现类,实现了长度可变的.连续的数组:拥有数组的特性. 遵循了LIst的规则:不唯一的.有序的. 如果没有增加泛型的话,集合中可以添加任何类型的数据. 使用 ...

  9. 20165306 Exp4 恶意代码分析

    Exp4 恶意代码分析 一.实践概述 1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生 ...

  10. Windows下安装Anaconda

    Windows下安装Anaconda   Anaconda介绍 Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.因为包含了大量的科学 ...