python运维开发之第四天
一、装饰器
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运维开发之第四天的更多相关文章
- python运维开发常用模块(四)文件对比模块difflib
1.difflib介绍 difflib作为 Python的标准库模块,无需安装,作用是对比文本之间的差异,且支持 输出可读性比较强的HTML文档,与Linux下的diff命令相似.我们可以 使用dif ...
- python运维开发(二十四)----crm权限管理系统
内容目录: 数据库设计 easyUI的使用 数据库设计 权限表Perssion 角色表Role 权限和角色关系表RoleToPermission 用户表UserInfo 用户和角色关系表UserInf ...
- Python运维开发基础08-文件基础【转】
一,文件的其他打开模式 "+"表示可以同时读写某个文件: r+,可读写文件(可读:可写:可追加) w+,写读(不常用) a+,同a(不常用 "U"表示在读取时, ...
- Python运维开发基础07-文件基础【转】
一,文件的基础操作 对文件操作的流程 [x] :打开文件,得到文件句柄并赋值给一个变量 [x] :通过句柄对文件进行操作 [x] :关闭文件 创建初始操作模板文件 [root@localhost sc ...
- Python运维开发基础06-语法基础【转】
上节作业回顾 (讲解+温习120分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 添加商家入口和用户入口并实现物 ...
- Python运维开发基础04-语法基础【转】
上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...
- Python运维开发基础03-语法基础 【转】
上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...
- Python运维开发基础02-语法基础【转】
上节作业回顾(讲解+温习60分钟) #!/bin/bash #user login User="yunjisuan" Passwd="666666" User2 ...
- Python运维开发基础01-语法基础【转】
开篇导语 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解. 教学预计分为四大部分,Python开发基础,Python开发进阶 ...
随机推荐
- bzoj2124 等差子序列(hash+线段树)
2124: 等差子序列 Time Limit: 3 Sec Memory Limit: 259 MBSubmit: 719 Solved: 261[Submit][Status][Discuss] ...
- Java中的数据类型及相互转换方法
本文主要讲解两个部分: 一.Java中的数据类型有哪些? 二.数字类型和字符串类型相互转换的方法? 一.Java中的数据类型有哪些: Java中的数据类型有:基本数据类型和引用数据类型: 基本数据类型 ...
- Android程序的入口点和全局变量设置--application
首先看看 application的官方文档 我之前一直以为Android程序的入口点就是带MAIN和LAUNCHER的Activity的onCreate方法,看来我是错了~ 原来真正的入口点是 Ap ...
- angularJS 服务二
$http服务 一 介绍 AngularJS为我们提供了很多种服务,$http用于发送http请求,动态的请求数据.我们可以使用内置的$http服务直接同外部进行通信.$http服务只是简单的封装了浏 ...
- php微信支付接口开发程序(一)
阅读对象 本文阅读对象:商户系统(在线购物平台.人工收银系统.自动化智能收银系统或其他)集成微信支付涉及的技术架构师,研发工程师,测试工程师,系统运维工程师. 支付模式 1. 刷卡支付 刷卡支付是用户 ...
- 南阳理工ACM-OJ 分数加减法 最大公约数的使用
http://acm.nyist.net/JudgeOnline/problem.php?pid=111 简单模拟: #include <iostream> #include <st ...
- Android 免费短信获取国家列表和国家代码
StringBuffer str = new StringBuffer(); for (Map.Entry<Character, ArrayList<String[]>> en ...
- php 二维数组以树形输出(转)
<?php /** * @author Skyline * @copyright 2011 */ $cate = array(1=>array('id'=>1,'pid'=>0 ...
- 在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别--转
其中,在地址栏按回车又分为两种情况.一是请求的URI在浏览器缓存中未过期,此时,使用Firefox的firebug插件在浏览器里显示的HTTP请求消息头如下: Host 192.168.3.17 ...
- java中-静态代码块、构造代码块、构造方法的联系
例如该题: 1 class Fu{ static { System.out.println("这是父类静态代码块"); } { System.out.println("这 ...