一、迭代器
二、装饰器
三、生成器
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的数据类型间进行转换
- Scrum 冲刺博客第五篇
一.当天站立式会议照片一张 二.每个人的工作 (有work item 的ID),并将其记录在码云项目管理中 昨天已完成的工作 实现题目的生成并将其显示到页面上,设置了背景音乐 今天计划完成的工作 判断 ...
- 一鼓作气 博客--第八篇 note8
0.,222] list[33] except IndexError as e : print('index error ') except ValueError as e : print('valu ...
- 一鼓作气 博客--第七篇 note7
面向对象相关知识简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义 ...
- 一鼓作气 博客--第六篇 note6
1.无论公司付给你多少,你的青春都是廉价的!! 2.通往财富自由之路 --得到APP 3.time 3.1 time.time() t = time.time() print(t) #--->1 ...
- 一鼓作气 博客--第四篇 note4
1.元祖允许重复数据.只读元组,列表,元祖没有增删改查,比如身份证列表,不允许修改,就存成 元祖. 2. 字典 key-value对 特性: 无顺序 去重 查询速度快,比列表快多了 比list占用内存 ...
- 一鼓作气 博客--第三篇 note3
1 推荐读书消费者行为学 -商业的本质,APP得到,5分钟商学院 2定义字典 dic={'name':haibao,'age':18} 3字典的基本操作--查询 dic={'name':'haibao ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(五)
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...
- [转]有哪些值得关注的技术博客(Java篇)
有哪些值得关注的技术博客(Java篇) 大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1. ...
- # Do—Now——团队冲刺博客_总结篇
Do-Now--团队冲刺博客_总结篇 目录 博客链接 作者 1. 第一篇(领航篇) @仇夏 2. 第二篇 @侯泽洋 3. 第三篇 @仇夏 4. 第四篇 @周亚杰 5. 第五篇 @唐才铭 6. 第六篇 ...
随机推荐
- JDK1.5/1.6/1.7之新特性总结(转载)
原文地址:http://www.cnblogs.com/yezhenhan/archive/2011/08/16/2141510.html 如果原作者看到不想让我转载请私信我! 开发过程中接触到了从j ...
- SqlServer -- 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'T_FM_AMTFLOW'中的标识列指定显式值。
SET IDENTITY_INSERT TABLE_NAME ON; INSERT INTO TABLE_NAME(XXX, XXX,..., XXX) SELECT XXX, XXX,..., XX ...
- PHPExcel 大数据的导出
PHPExcel 是一个php语言读取导出数据.导入生成Excel的类库,使用起来非常方便,但有时会遇到以些问题,比如导出的数据超时,内存溢出等. 下面我们来说说这些问题和解决办法. PHPExcel ...
- python学习笔记(5)--迭代器,生成器,装饰器,常用模块,序列化
生成器 在Python中,一边循环一边计算的机制,称为生成器:generator. 如: >>> g = (x * x for xin range(10)) >>> ...
- [UWP]使用AdaptiveTrigger实现自适应布局
这篇博客将介绍如何在UWP开发中使用AdaptiveTrigger实现自适应布局. 场景1:窗体宽度大于800时,窗体背景色为绿色,窗体在0到800之间为蓝色. XAML Code: <Grid ...
- [Unity3D]自制UnityForAndroid二维码扫描插件
一周左右终于将二维码生成和扫描功能给实现了,终于能舒缓一口气了,从一开始的疑惑为啥不同的扫码客户端为啥扫出来的效果不同?通用的扫描器扫出来就是一个下载APK,自制的扫描器扫出来是想要的有效信息,然后分 ...
- 前端js调用七牛制作评价页面案例
一.需求 公司所有的上传页面都用七牛,前端不免要直接调用七牛的代码进行上传,以下是一个实现七牛上传的案例,制作一个常见的商品评价页面,页面需求很常见当上传到第五章图片的时候,上传按钮消失,上传需要显示 ...
- SQL函数说明大全
一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下表给出了T-SQL函数的类别和描 ...
- dos下对mysql的简单操作(linux类似)
>>>>>>>>>>>>>>>>>>>> 基础入门语句10条 1. 连接服务器 ...
- [spring源码学习]三、IOC源码——自定义配置文件读取
一.环境准备 在文件读取的时候,第9步我们发现spring会根据标签的namespace来选择读取方式,联想spring里提供的各种标签,比如<aop:xxx>等应该会有不同的读取和解析方 ...