一、装饰器

1、器:代表函数,装饰器本质是函数,(装饰器他函数)

2、功能:为其他函数添加附加功能

3、原则:

  (1)不能修改被装饰函数的源代码

  (2)不能修改被装饰函数的调用方式

4、实现装饰器知识储备:

  (1)函数即“变量”,定义变量就是把函数体赋值给函数名(函数引用基数内存回收)

  (2)高阶函数

    a、把一个函数名当作实参传给另一个函数

    b、返回值中包含函数名

   其中a不修改源代码,b不修改调用方式

  (3)嵌套函数

    在函数体内去声明一个函数(def)

#!/usr/bin/env python
# -*- coding: utf- -*-
# @Author : Willpower-chen
# @blog: http://www.cnblogs.com/willpower-chen/
#
# import time
'''
装饰器本质是函数,函数即‘变量’
''' # #例子1
# def foo():
# time.sleep()
# print('in the foo')
# bar()
#
# foo() # #例子2
# def bar():
# print('in the bar')
# def foo():
# time.sleep()
# print('in the foo')
# bar()
# foo()
#
#
# #例子3
# def foo():
# time.sleep()
# print('in the foo')
# bar()
# def bar():
# print('in the bar')
# foo()
#
# #例子4
# def foo():
# time.sleep()
# print('in the foo')
# bar()
# foo()
# def bar():
# print('in the bar') import time def timer(func):
def recod(*args,**kwargs):
start_time = time.time()
func(*args,**kwargs)
stop_time = time.time()
run_time = stop_time - start_time
print('调用%s 耗时 %s'%(func,run_time))
return recod
@timer
def test1():
time.sleep()
print('in the test1') @timer
def test2(name,age,sex):
time.sleep()
print('yourname is: ',name,age,sex) test1()
test2('cjk','','man')

二、生成器(generator)

1、生成器只有在调用时,才会生成相应的数据

2、生成器只记录当前位置

3、只有一个__next__()方法

#!/usr/bin/env python
# -*- coding: utf- -*-
# @Author : Willpower-chen
# @blog: http://www.cnblogs.com/willpower-chen/ import time def consumer(name):
while True:
baozi = yield
print("\033[32m包子%s来了\033[0m,被%s吃了!!! "% (baozi,name)) def produce(name):
c = consumer('王')
c2 = consumer('张')
c.__next__()
c2.__next__()
print('%s准备做包子'%name)
for i in range():
time.sleep()
print('%s做了两个包子'%name)
c.send("韭菜馅")
c2.send("牛肉馅") produce('咪咪')

吃包子

三、迭代器

1、可直接作用于for循环的对象统称为可迭代对象iterable

  isinstance()判断是否可迭代对象

2、可以被next()函数调用并不断返回下一个值的对象称为迭代器interator

3、list,dict,str编程iterator使用iter()函数

四、内置方法

1、匿名函数

(lambda n:print(n))(5)等价于

calc = lambada n:print(n)

calc(5)

2、filter()过滤

res = filter(lambda n:n>5,range(10))

for i in res:print(i)

五、json&pickle

1、json序列化与反序列化

(1)序列化 json.dumps()

(2)反序列化json.loads()

json只能处理简单的序列化,主要是不同语言之间的转换

2、pickle序列化与反序列化

只能在python中进行转化,支持更复杂的序列化

python运维开发之第四天的更多相关文章

  1. python运维开发常用模块(四)文件对比模块difflib

    1.difflib介绍 difflib作为 Python的标准库模块,无需安装,作用是对比文本之间的差异,且支持 输出可读性比较强的HTML文档,与Linux下的diff命令相似.我们可以 使用dif ...

  2. python运维开发(二十四)----crm权限管理系统

    内容目录: 数据库设计 easyUI的使用 数据库设计 权限表Perssion 角色表Role 权限和角色关系表RoleToPermission 用户表UserInfo 用户和角色关系表UserInf ...

  3. Python运维开发基础08-文件基础【转】

    一,文件的其他打开模式 "+"表示可以同时读写某个文件: r+,可读写文件(可读:可写:可追加) w+,写读(不常用) a+,同a(不常用 "U"表示在读取时, ...

  4. Python运维开发基础07-文件基础【转】

    一,文件的基础操作 对文件操作的流程 [x] :打开文件,得到文件句柄并赋值给一个变量 [x] :通过句柄对文件进行操作 [x] :关闭文件 创建初始操作模板文件 [root@localhost sc ...

  5. Python运维开发基础06-语法基础【转】

    上节作业回顾 (讲解+温习120分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 添加商家入口和用户入口并实现物 ...

  6. Python运维开发基础04-语法基础【转】

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...

  7. Python运维开发基础03-语法基础 【转】

    上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...

  8. Python运维开发基础02-语法基础【转】

    上节作业回顾(讲解+温习60分钟) #!/bin/bash #user login User="yunjisuan" Passwd="666666" User2 ...

  9. Python运维开发基础01-语法基础【转】

    开篇导语 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解. 教学预计分为四大部分,Python开发基础,Python开发进阶 ...

随机推荐

  1. HttpContext.Current.Cache 和 HttpRuntime.Cache 区别

    原文地址:http://blog.csdn.net/avon520/article/details/4872704 .NET中Cache有两种调用方式:HttpContext.Current.Cach ...

  2. Java调用R(三)_系统命令调用

    java通过配置的系统命令Rscript直接调用R脚本. 优点:R脚本和Java代码完全分离 缺点:R中变量不能控制 1. Java本地能够成功调用. public void CallR() { Ru ...

  3. Hibernate学习笔记(一):级联删除

    一对多的关系映射 在一的一方配置文件中将会配置set节点信息: *.hbm.xml配置文件中set节点的属性: Lazy:默认是true 即使用延迟加载,false表示即时加载: Order-by:一 ...

  4. kafka入门教程

    1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic.发送消息.消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有哪两个条件 ...

  5. Unity3D 画线插件 Vectrosity_Simple2DLine

    Vectrosity是一个很方便的画线插件,用它我们可以画出2D,3D,贝塞尔,圆,椭圆等各种线条图案. :链接: http://pan.baidu.com/s/1pJjTFjt 密码: uesn 首 ...

  6. Struts2接收参数的几种方式

    一.用Action属性 在action里定义要接收的参数,并提供相应的set和get方法. 如: public class LoginAction extends ActionSupport { pr ...

  7. Android图片框架---Glide

    Glide *** 使用* 一.添加依赖* compile 'com.github.bumptech.glide:glide:3.7.0'* compile 'com.android.support: ...

  8. 自己动手写shell之chgrp,chown,chmod

    1.chgrp实现 #include <grp.h> #include <unistd.h> void chgrp(char * groupname,char * filena ...

  9. yii自动登陆的验证机制浅析

    一直在使用yii进行开发, 也知道如何去使用, 也仅仅是知道怎么去用罢了, 终归是没研究过源码, 心里发虚, 今天遇到一个问题, 关于自动登陆的问题. 要求就是, 修改登陆保存session天数为自定 ...

  10. Python之路,Day8 - Socket编程进阶

    Python之路,Day8 - Socket编程进阶   本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...