一、装饰器

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. bzoj2124 等差子序列(hash+线段树)

    2124: 等差子序列 Time Limit: 3 Sec  Memory Limit: 259 MBSubmit: 719  Solved: 261[Submit][Status][Discuss] ...

  2. Java中的数据类型及相互转换方法

    本文主要讲解两个部分: 一.Java中的数据类型有哪些? 二.数字类型和字符串类型相互转换的方法? 一.Java中的数据类型有哪些: Java中的数据类型有:基本数据类型和引用数据类型: 基本数据类型 ...

  3. Android程序的入口点和全局变量设置--application

    首先看看 application的官方文档 我之前一直以为Android程序的入口点就是带MAIN和LAUNCHER的Activity的onCreate方法,看来我是错了~  原来真正的入口点是 Ap ...

  4. angularJS 服务二

    $http服务 一 介绍 AngularJS为我们提供了很多种服务,$http用于发送http请求,动态的请求数据.我们可以使用内置的$http服务直接同外部进行通信.$http服务只是简单的封装了浏 ...

  5. php微信支付接口开发程序(一)

    阅读对象 本文阅读对象:商户系统(在线购物平台.人工收银系统.自动化智能收银系统或其他)集成微信支付涉及的技术架构师,研发工程师,测试工程师,系统运维工程师. 支付模式 1. 刷卡支付 刷卡支付是用户 ...

  6. 南阳理工ACM-OJ 分数加减法 最大公约数的使用

    http://acm.nyist.net/JudgeOnline/problem.php?pid=111 简单模拟: #include <iostream> #include <st ...

  7. Android 免费短信获取国家列表和国家代码

    StringBuffer str = new StringBuffer(); for (Map.Entry<Character, ArrayList<String[]>> en ...

  8. php 二维数组以树形输出(转)

    <?php /** * @author Skyline * @copyright 2011 */ $cate = array(1=>array('id'=>1,'pid'=>0 ...

  9. 在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别--转

    其中,在地址栏按回车又分为两种情况.一是请求的URI在浏览器缓存中未过期,此时,使用Firefox的firebug插件在浏览器里显示的HTTP请求消息头如下: Host    192.168.3.17 ...

  10. java中-静态代码块、构造代码块、构造方法的联系

    例如该题: 1 class Fu{ static { System.out.println("这是父类静态代码块"); } { System.out.println("这 ...