一、迭代器
二、装饰器
三、生成器
1.生成列表的方式有几种
2、把列表每个数都加1
2.1
data =[1,2,3]
for i in map(lambda x:x+1,data):print(i)
2.1
data =[1,2,3]
for i in data:
i= i+1
print(i)
2.3
data=[348,33,33]
for index ,i in enumerate(data):
data[index] +=1
print(data[index])
2.4
data=[348,33,33,3939]
data=[i+1 for i in data]
print(data)
2.5
2.4列表生成式
data=[93939399,33,3,4,2,222]
data=[i+1 for i in data]
print(data)
2.5三元运算
data= [2,3,4,56,7,8,9]
data=[i*6 if i > 2 else -i for i in data]
print(data)
2.6 岁月是把杀猪刀
2.7 惰性运算--生成器即一边循环一边计算,generator
2.8列表生成式是中括号,生成器是小括号
#列表生成式
H=[h*h for h in range(29)]
print(H)
#生成器
H2=(h*h for h in range(29))
print(H2)
2.8.1生成器只能从第一个值开始推导,必须一个一个访问,不能跳着访问, 不能通过下标取到。如:
H2=(h*h for h in range(29))
print(H2)
H2[5]
output:<generator object <genexpr> at 0x0000000000697A40>
2.8.2生成器:依次计算,计算到第4个,前面三个数据就没了
H2=(h*h for h in range(29))
print(H2)
for i in H2:
print(i)
**********
output:
<generator object <genexpr> at 0x00000000006B7A40>
0
1
4
9
16
25
36
49
2.8.3生成器生成下一个:data.__next__()
H2=(h*h for h in range(29))
H2.__next__()
print(H2.__next__())
H2.__next__()
print(H2.__next__())
--->4
2.8.4 连续生成三次
H2=(h*h for h in range(29))
H2.__next__()
print(H2.__next__())
H2.__next__()
print(H2.__next__())
--->1 9
2.8.5只有print才能打印调用结果,否则每次调用的过程不能直接打印出来,因为这个过程并没有保存到内存里。
H2=(h*h for h in range(29))
H2.__next__()
print(H2.__next__())
H2.__next__()
----> 1
2.8.6生成器下一个 表示方法两种:
2.8.1.1data.__next__()
2.8.1.1.next(data)
H2=(h*h for h in range(29))
H2.__next__() #--->0
H2.__next__() #----1
next(H2) #----4
print(next(H2)) # --->9
output:9
2.斐波那契数列用列表生成式写不出来,但是,用函数很容易打印出来如:
def fib(max):
n,a,b= 0,0,1
while n < max:
print(b)
a,b = b,a+b
n=n+1
return 'done'
2.10 一行赋值两个
a,b=0,9
print(a)
print(b)
2.11斐波那契中,yield 返回a给通过__next__()调用当前函数的人,不结束,同时挂起当前函数,__next__()取yield()的返回值。这代表通过yield实现了函数的中断,并且保存了函数中间执行的状态。
yield a #返回a, 同时挂起当前这个函数, a返回给了通过__next__()调用当前函数的人
def fib(num):
count = 0
a,b = 0,1
while count < num:
tmp =a
a = b
b = a + tmp
count +=1
yield a
print('done')
f=fib(13)
print(fib(13))
f.__next__()
print(f.__next__())
f.__next__()
print(f.__next__())
f.__next__()
print(f.__next__())
f.__next__()
print(f.__next__())
3、生成器对象,表示准备好,可以开始调用了
4、send相当于next,并且能传递数据给yield
import time
def consumer(name):
print('准备吃包子啦')
while True:
baozi = yield
print('eat %s baozi,baozi is eaten by %s'%(baozi,name))
def producer(name):
c=consumer('A')
c2=consumer('B')
c.__next__()
c2.__next__()
print('baozi come soon later')
for i in range(5):
print('2 baozi is ok')
c.send(i)
c2.send(i)
producer('alex')
5、列表可以被迭代,数字不可以被迭代
6、所有的生成器都是迭代器
可以被next()函数调用并不断返回下一个值得对象被称为迭代器
迭代器不一定是生成器
通过iter 变成一个迭代器,带next方法
7、python3 做了优化,python2 保存过程数据
9、装饰器
8.1完全符合开发过程中开放-封闭原则。
8.2不改变原有代码,不改变原有调用方式,实现新的扩展功能。
9、QQ WEIXIN
user_staturs=False
def login(auth_type):
def outer(func):
def inner():
if auth_type == 'qq':
_username ='alex'
_password ='abc123'
global user_staturs
if user_staturs ==False:
username = input('user:')
password = input('password:')
if username == _username and password ==_password:
print('welcome vip')
user_staturs =True
else:
print('pls try again')
if user_staturs == True:
func()
else:
print('only support qq')
return inner #
return outer
def home():
print('----this is home')
def america():
print('---welcome to america')
@login('qq')
def japan():
print('---welcome to japan')
@login('weixin')
def china():
print('---welcome to china')
japan()
china()
10、 模块 import 时, 在同一级目录能找到,就优先当前目录,找不到就往后找。
寻找路径
import auth
@auth.login
from import import login
11、添加相对路径 os.path.dirname(__file__)
os.path.dirname( os.path.dirname(__file__))
__file__
12、把相对路径变为绝对路径
(__file__)--相对路径
os.path.abspath(__file__)把相对路径边位绝对路径
BaseDir =os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
BaseDir =os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
/// 都是pycharm加工过的。。  实际上Windows里是\\\\  加上abspath他就现出原形了
__file__也不是全路径 而是相对路径 就上上面那个一样 你pycharm里显示的全路径也是加工过的
在shell里执行就像上面一样了
13、一个模块导入多个方法
13.1from auth import *
如果自己的方法与auth里边重名,就把原来的覆盖
13.2import auth
auth.paycheck #调用方式写法
py2 没有_init_被当作目录,目录是不可以被导入的
有_init_,那这个目录就变成了package,包
no matter py2 or py3,only the package can be imported.
howerer,in py3,the directory will also be treated as package
_init_.py in py3,is not a mandatory
sys.stdout.flush() 强制刷新
sys.stdin.readline()接收屏幕标准输入
json:写入文件
文件只能接受字符串,二进制。
修改后可以保存:
把一个内存对象转成字符串形式就叫序列化
把一个字符串转成对应的内存对象就叫反序列化
序列化的作用就是持久化内存数据对象
json.dump
反序列化
json.decoder.JSONDecodeError: Extra data: line 1 column 40 (char 39)  
json.dump
json.load
14、json读写:
import json
data = {'name':'alex','age':10,'sex':'F'}
f=open("data.txt",'w',encoding='utf-8')
json.dump(data,f)
#dump 写到data.txt
import json
f=open("data.txt",encoding='utf-8')
data=json.load(f)
# data=json.loads(f.read())
print(data)
json,用于字符串 和 python数据类型间进行转换
pickle,用于python特有的类型 和 python的数据类型间进行转换

一鼓作气 博客--第五篇 note5的更多相关文章

  1. Scrum 冲刺博客第五篇

    一.当天站立式会议照片一张 二.每个人的工作 (有work item 的ID),并将其记录在码云项目管理中 昨天已完成的工作 实现题目的生成并将其显示到页面上,设置了背景音乐 今天计划完成的工作 判断 ...

  2. 一鼓作气 博客--第八篇 note8

    0.,222] list[33] except IndexError as e : print('index error ') except ValueError as e : print('valu ...

  3. 一鼓作气 博客--第七篇 note7

    面向对象相关知识简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义 ...

  4. 一鼓作气 博客--第六篇 note6

    1.无论公司付给你多少,你的青春都是廉价的!! 2.通往财富自由之路 --得到APP 3.time 3.1 time.time() t = time.time() print(t) #--->1 ...

  5. 一鼓作气 博客--第四篇 note4

    1.元祖允许重复数据.只读元组,列表,元祖没有增删改查,比如身份证列表,不允许修改,就存成 元祖. 2. 字典 key-value对 特性: 无顺序 去重 查询速度快,比列表快多了 比list占用内存 ...

  6. 一鼓作气 博客--第三篇 note3

    1 推荐读书消费者行为学 -商业的本质,APP得到,5分钟商学院 2定义字典 dic={'name':haibao,'age':18} 3字典的基本操作--查询 dic={'name':'haibao ...

  7. 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(五)

    系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...

  8. [转]有哪些值得关注的技术博客(Java篇)

    有哪些值得关注的技术博客(Java篇)   大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1. ...

  9. # Do—Now——团队冲刺博客_总结篇

    Do-Now--团队冲刺博客_总结篇 目录 博客链接 作者 1. 第一篇(领航篇) @仇夏 2. 第二篇 @侯泽洋 3. 第三篇 @仇夏 4. 第四篇 @周亚杰 5. 第五篇 @唐才铭 6. 第六篇 ...

随机推荐

  1. Wakez计算与压缩的思考

    大部分人认为,比尔盖茨在1981年说过这样一句话:640K ought to be enough for anybody.(640个kB对任何人来说都应该足够了).不过后来比尔盖茨否认自己说过这句话. ...

  2. 泛型T的类型获取

    T.getClass()或者T.class都是非法的,因为T是泛型变量. 由于一个类的类型是什么是在编译期处理的,故不能在运行时直接在Base里得到T的实际类型. /** * 可以在service层直 ...

  3. MySql触发器语法总结

    经过昨天多次失败,今天终于将我要实现的触发器功能写成功了,触发器代码如下: -- use dbfortest; drop trigger if exists tg_before_insert_on_d ...

  4. Laravel中的日志与上传

    PHP中的框架众多,我自己就接触了好几个.大学那会啥也不懂啥也不会,拿了一个ThinkPHP学了.也许有好多人吐槽TP,但是个人感觉不能说哪个框架好,哪个框架不好,再不好的框架你能把源码读上一遍,框架 ...

  5. 【Java EE 学习 80 上】【WebService】

    一.WebService概述 什么是WebService,顾名思义,就是基于Web的服务,它使用Http方式接收和响应外部系统的某种请求,从而实现远程调用.WebService实际上就是依据某些标准, ...

  6. Windows下用tree命令生成目录树

    有时候我们想为某个目录制作一个文档结构图,在Windows上,我们知道是使用tree命令. 但是,默认情况下tree只显示子目录名,而不显示子目录里的文件名,需要加上/F参数才能显示完整的文件名.   ...

  7. 如何把Qlik Sense嵌入到Web应用中

    (此文章同时发表在本人微信公众号"dotNET开发经验谈",欢迎右边二维码来关注.) 题记:这是一个给初学者(尤其对VS不熟悉的BI工程师)的入门操作向导. Qlik Sense是 ...

  8. maven权威指南学习笔记(三)——一个简单的maven项目

    目标: 对构建生命周期 (build  lifecycle),Maven仓库 (repositories),依赖管理 (dependency management)和项目对象模型 (Project O ...

  9. Python OS模块常用函数说明

    Python的标准库中的os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Wi ...

  10. Linux学习笔记(16)-多线程

    什么是多线程?或者说,什么是线程? 按照书本上的描述,所谓线程,便是包含在进程内部的顺序执行流,是进程中实际运作的单位,也是操作系统能够进行调度的最小单位. 一个进程中可以并发多条线程,每条线程并行执 ...