一、装饰器

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. Invert Binary Tree——LeetCode

    Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 Trivia:This problem was ...

  2. linux 发邮件

      一. centos yum 安装 1. yum install mailx vim  /etc/nail.rc 添加网易163邮箱开放的需要认证的smtp服务器: set from=USER@16 ...

  3. 字符串的encode与decode解决乱码问题

    !/usr/bin/env python coding=utf-8 s="中文" if isinstance(s, unicode): s=u"中文" prin ...

  4. [HDU 2049] 不容易系列之(4)——考新郎 (错排问题)

    不容易系列之(4)——考新郎 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2049 题目大意: 有N对新婚夫妇,其中所有的新娘站成一列,都盖上了红布. ...

  5. paip.输入法编程----删除双字词简拼

    paip.输入法编程----删除双字词简拼 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/at ...

  6. 微信,QQ这类IM app怎么做——谈谈Websocket

    前言 关于我和WebSocket的缘:我从大二在计算机网络课上听老师讲过之后,第一次使用就到了毕业之后的第一份工作.直到最近换了工作,到了一家是含有IM社交聊天功能的app的时候,我觉得我现在可以谈谈 ...

  7. git 创建远程仓库

    在远程服务器上$ cd /server/path/ $ git init --bare myproject.git 在本地 1> $ cd /client/path/ 运行 git init 2 ...

  8. 使用NAT方式连网的linux服务器虚拟机搭建

    从一开始我就很纠结centos服务器搭建的过程. 由于自己方向并不在运维上,但是学习开发也需要用到Linux所以就一直没认真去学. 经过自己多方面摸索与学习找到了自己的一套方法. 首先我用到的是 ce ...

  9. SPOJ 4053 - Card Sorting 最长不下降子序列

    我们的男主现在手中有n*c张牌,其中有c(<=4)种颜色,每种颜色有n(<=100)张,现在他要排序,首先把相同的颜色的牌放在一起,颜色相同的按照序号从小到大排序.现在他想要让牌的移动次数 ...

  10. 【iOS UISearchBar父控件是UIScrollView时,上移的问题】

    如果UISearchViewController的父控件是UIScrollView,点击UISearchBar后,它会移出控制器外.如下,使用UIScrollView作为"消息"和 ...