Python基础学习总结__Day4
2024-08-30 07:14:23
一、装饰器
前戏:
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)
六、合理目录结构
最新文章
- [Python学习] Linux环境下的Python配置,必备库的安装配置
- Activity之间传递参数(三)
- XMPP即时通信(基础)
- [译] EXTENDING JQUERY &ndash; 2.2 A simple plugin
- 转:EntityFramework查询--联合查询(Join,GroupJoin)
- Android为ViewPager增加切换动画——使用属性动画.
- Magento控制器
- centos7开机/etc/rc.local不执行的问题
- ExtJS4.2学习(二)Ext统一组件模型——Panel
- linux的终端,网络虚拟终端,伪终端(转)
- DDD分层架构的进化
- Professional C# 6 and .NET Core 1.0 - Chapter 41 ASP.NET MVC
- MongoDB一个基于分布式文件存储的数据库(介于关系数据库和非关系数据库之间的数据库)
- 一个for循环打印二维数组
- java之Servlet监听器Listener
- 【Luogu3478】【POI2008】STA-Station(动态规划)
- React 学习(六) ---- 父子组件之间的通信
- Android中使用BufferedReader.readline阻塞读取不到数据,但是ready返回true
- spring拦截器-过滤器的区别
- github常见错误提示之一
热门文章
- Python 工具包 werkzeug 初探
- mybatis pageHelper 分页插件使用
- netty~引用对象引用
- ASM 磁盘组的的scrip
- docker postgresql FATAL: could not access private key file ";/etc/ssl/private/ssl-cert-snakeoil.key";: Permission denied
- Java设计模式之单例设计模式总结
- Sql server 查询指定时间区间工作日数、休息日数等日期操作
- 关于Identityserver4和IdentityServer3 授权不兼容的问题
- ubuntu 14.04 安装minidwep-gtk
- Java面向对象(接口、多态)