一、迭代器
二、装饰器
三、生成器
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. java的异常总结

    异常:在java程序中也出现不正常的情况,这个就叫异常.java是面向对象的语言.任何事物都可以用类来描述,同样异常也是一种事物,java中提供了很多异常类 很多异常堆积起来叫做异常体系 Throwa ...

  2. mysql 创建用户、授权等操作

    一, 创建用户: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指 ...

  3. windows下常查看端口占用方法总结

    启动Tomcat时又出现端口占用错误.现在把对端口的处理命令和方法进行汇总. 1.查看所有连接的PID 开始--运行--cmd  ,输入netstat -ano 找到端口号对应的PID后,从任务管理器 ...

  4. ubuntu下更改鼠标移动速度

    ubuntu下,系统设置中,无法更改外接鼠标的移动指针速度,如图: 然后百度,终于找到一个靠谱打方法: 命令: xset m N 其中,N是速度,估计取值为0-10 该方法比起网上的某些攻略简单好多

  5. 【JavaScript】ES6 新语法

    function* 声明 function* 声明(function关键字后跟一个星号)定义一个generator(生成器)函数,返回一个Generator对象. 生成器是一种可以从中退出并在之后重新 ...

  6. 【My Life】写在年末, 我的2013

    [My Life]写在年末, 我的2013 SkySeraph Dec. 30  2013 Email:skyseraph00@163.com 好久没写博客了, 遗忘的历史,遗忘了自我... 岁月拾回 ...

  7. jquery中ajax返回值无法传递到上层函数

    function通过ajax调用获取后台数据,结果返回出来的结果均为空,代码如下: function chart_coinbase_getdata() { var test = {postdata:& ...

  8. AC自动机专题

    AC自动机简介:KMP是用于解决单模式串匹配问题, AC自动机用于解决多模式串匹配问题. 精华:设这个节点上的字母为C,沿着他父亲的失败指针走,直到走到一个节点,他的儿子中也有字母为C的节点.然后把当 ...

  9. react native 中webview内的点击事件传到外部原生调用

    先说一下我使用webview的时候遇到的一个功能需求 是这样的,上图中的这个页面是用h5做的,但是由于点击"我的优惠劵"是需要跳转到我原生的页面,也就是说我需要获得这个h5提供的点 ...

  10. 《UML大战需求分析》阅读随笔(五)

    在处理复杂事物的时候,用到一种基本手段就是抽象.抽象的目的是区别事物之间的本质和不同,面向对象编程(OOP)的实质就是利用 类和对象来建立抽象模型. 类表示对象的类别,是创建对象的蓝本.建立一个事物的 ...