一、装饰器

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. VK Cup 2015 - Round 1 -E. Rooks and Rectangles 线段树最值+扫描线

    题意: n * m的棋盘, k个位置有"rook"(车),q次询问,问是否询问的方块内是否每一行都有一个车或者每一列都有一个车? 满足一个即可 先考虑第一种情况, 第二种类似,sw ...

  2. 一个美国小券商的生存之道Tradestation

    转自:证券时报记者 张欣然 桂衍民 中国互联网金融的口号喊了十几年,众多证券公司仍然苦于找不到新的蓝海,研究大西洋彼岸的美国TradeStation公司的业务模式,也许对国内的证券公司会有一些启迪. ...

  3. 深度克隆---js对象引用

    首先,我们要知道,javascript中除了基本类型(number,string,boolean,null,undefined)之外就是引用类型了,也可以说就是js对象了. 引用类型的赋值其实是对象保 ...

  4. python环境配置selenium与IE、Chrome、Firefox、PhantomJS

    安装.升级selenium pip install -U selenium 下载对应平台最新版的browser driver chrome: http://chromedriver.storage.g ...

  5. msyql 字节问题

    MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定).在 MySQL5.0以上的版本中,varchar数据 ...

  6. 【BZOJ4327】JSOI2012 玄武密码 AC自动机

    [BZOJ4327]JSOI2012 玄武密码 Description 在美丽的玄武湖畔,鸡鸣寺边,鸡笼山前,有一块富饶而秀美的土地,人们唤作进香河.相传一日,一缕紫气从天而至,只一瞬间便消失在了进香 ...

  7. adb logcat命令查看并过滤android输出log

    cmd命令行中使用adb logcat命令查看android系统和应用的log,dos窗口按ctrl+c中断输出log记录. logcat日志中的优先级/tag标记: android输出的每一条日志都 ...

  8. 2016最新cocoapods版本更新,以及多个版本的问题

    先删除之前的pod 在终端中执行下面命令. 删除目录下的podrm -rf /usr/local/bin/pod 执行gem list | grep cocoapods 查看所有与cocoapods相 ...

  9. iOS10相机等崩溃

    当使用iOS10使用相机时会出现崩溃 This app has crashed because it attempted to access privacy-sensitive data withou ...

  10. Demon_背包系统(实现装备栏,背包栏,可以切换装备)

    using UnityEngine; using System.Collections; public enum BoxType { Normal,//普通格子 Equip//装备栏格子 } publ ...