一、装饰器

前戏:

1.函数即变量

(1)函数名为‘门牌号’即内存地址,加括号开始调用

(2)没有变量调用将清空内存

(3)匿名函数(lambda函数):没有‘门牌号’,需要赋值给变量,否则将会被清空

2.高阶函数

(1)将函数名作为实参传给另一个函数(不改变源代码的情况下添加功能)

(2)将函数名作为另一个函数的返回值(不改变调用方式)

3.嵌套函数:在函数体内用def再定义一个函数

正餐:

1、装饰器的作用:在不改变源代码和调用方式的情况下为原程序添加功能,以提高扩展性

2、装饰器的构成:嵌套函数+高阶函数

 #Author:Barry
import time def timer(func):
def dec(*args):
stat_time = time.time()
func(*args)
stop_time = time.time()
print('time is %s'%(stop_time-stat_time))
return dec @timer #test = timer(test) = dec
def test1():
time.sleep(3)
print("in this test1") @timer #test = timer(test) = dec
def test2(name,age):
time.sleep(3)
print("in this test2",name,age) test1()
test2("Barry",22)

二、迭代器

1.提前存在数据,并直接生成所有数据

2.列表生成式

3.可迭代对象:可用for循环

4.迭代器对象:可被next()调用并不断返回下一个值的对象

三、生成器

1.在调用时才生成相应的数据,可节省内存

2.方法:

(1)Next:执行下一步

(2)Send:可向yield传参

斐波那契数列:

 #Author:Barry
def fib(max):
a,b,n = 0,1,0
while n<max:
yield b
a,b = b,a+b
n = n + 1
return '牛逼'
f = fib(10)
while True:
try:
i = next(f)
print(i)
except StopIteration as ex:
print(ex.value)
break

简单并发:

#Author:Barry
import time
def consumer(name):
print('%s准备吃包子了'%name)
while True:
baozi = yield
print('%s包子来了,%s快来吃包子'%(baozi,name))
# c = consumer('Barry')
# c.__next__()
# c.send('韭菜馅')
def producer(name):
c = consumer('A')
c2 = consumer('B')
c.__next__()
c2.__next__()
print('开始做包子')
for i in range(10):
time.sleep(1)
print('做了一个包子,分了两瓣')
c.send(i)
c2.send(i)
producer('Barry')

四、内置函数简介

五、Json序列化

功能:不同语言之间数据系统交互

序列化:

#Author:Barry
import json
info = {
'name':'Barry',
'age': 22
}
f = open('test','w')
# print(json.dumps(info))
f.write(json.dumps(info))

反序列化:

#Author:Barry
import json
f = open('test','r')
data = json.loads(f.read())
print(data)

六、合理目录结构

最新文章

  1. [Python学习] Linux环境下的Python配置,必备库的安装配置
  2. Activity之间传递参数(三)
  3. XMPP即时通信(基础)
  4. [译] EXTENDING JQUERY &ndash; 2.2 A simple plugin
  5. 转:EntityFramework查询--联合查询(Join,GroupJoin)
  6. Android为ViewPager增加切换动画——使用属性动画.
  7. Magento控制器
  8. centos7开机/etc/rc.local不执行的问题
  9. ExtJS4.2学习(二)Ext统一组件模型——Panel
  10. linux的终端,网络虚拟终端,伪终端(转)
  11. DDD分层架构的进化
  12. Professional C# 6 and .NET Core 1.0 - Chapter 41 ASP.NET MVC
  13. MongoDB一个基于分布式文件存储的数据库(介于关系数据库和非关系数据库之间的数据库)
  14. 一个for循环打印二维数组
  15. java之Servlet监听器Listener
  16. 【Luogu3478】【POI2008】STA-Station(动态规划)
  17. React 学习(六) ---- 父子组件之间的通信
  18. Android中使用BufferedReader.readline阻塞读取不到数据,但是ready返回true
  19. spring拦截器-过滤器的区别
  20. github常见错误提示之一

热门文章

  1. Python 工具包 werkzeug 初探
  2. mybatis pageHelper 分页插件使用
  3. netty~引用对象引用
  4. ASM 磁盘组的的scrip
  5. docker postgresql FATAL: could not access private key file &quot;/etc/ssl/private/ssl-cert-snakeoil.key&quot;: Permission denied
  6. Java设计模式之单例设计模式总结
  7. Sql server 查询指定时间区间工作日数、休息日数等日期操作
  8. 关于Identityserver4和IdentityServer3 授权不兼容的问题
  9. ubuntu 14.04 安装minidwep-gtk
  10. Java面向对象(接口、多态)