python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志、性能测试、事务处理等等。创建函数修饰符的规则:(1)修饰符是一个函数(2)修饰符取被修饰函数为参数(3)修饰符返回一个新函数(4)修饰符维护被维护函数的签名例子1:被修饰函数不带参数deflog(func):defwrapper():print('log开始...')func()print('log结束...')returnwrapper@logdeftest():print('te
系统 2019-09-27 17:54:36 2129
一、协程协程,又叫微线程,纤程。英文名Coroutine。协程本质上就是一个线程优点1:协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越来越明显。(简单来说没有切换的消耗)优点2:不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好,所以执行效率比多线程高很多。(没有锁的概念)因为协程是一个线程执行,那怎么利用
系统 2019-09-27 17:54:05 2129
师父布置的任务,让我写一个服务练练手,搞清楚socket的原理和过程后跑了一个小demo,很有成就感,代码内容也比较清晰易懂,很有教育启发意义。代码#coding:utf-8importsocketfrommultiprocessingimportProcessHTML_ROOT_DIR=""defhandle_client(client_socket):"""处理客户端请求"""#获取客户端请求数据request_data=client_socket.r
系统 2019-09-27 17:53:32 2129
测试1deco运行,但myfunc并没有运行复制代码代码如下:defdeco(func):print'beforefunc'returnfuncdefmyfunc():print'myfunc()called'myfunc=deco(myfunc)测试2需要的deco中调用myfunc,这样才可以执行复制代码代码如下:defdeco(func):print'beforefunc'func()print'afterfunc'returnfuncdefmyfu
系统 2019-09-27 17:51:53 2129
本文实例讲述了Python使用matplotlib实现交换式图形显示功能。分享给大家供大家参考,具体如下:一代码fromrandomimportchoiceimportnumpyasnpimportmatplotlib.pyplotaspltfrommatplotlib.widgetsimportRadioButtons,Buttont=np.arange(0.0,2.0,0.01)s0=np.sin(2*np.pi*t)s1=np.sin(4*np.pi
系统 2019-09-27 17:50:22 2129
一个最最简单的例子:绘制一个从0到360度完整的SIN函数图形importnumpyasnpimportmatplotlib.pyplotasptx=np.arange(0,360)#如果打印x,NumPy会给你很好看的打印格式#print(x)y=np.sin(x*np.pi/180)pt.plot(x,y)pt.xlim(0,360)pt.ylim(-1.2,1.2)pt.title("SINfunction")pt.show()效果图如下:下面我们加
系统 2019-09-27 17:49:36 2129
python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。基本接口:复制代码代码如下:pickle.dump(obj,file,[,protocol])注解:将对象obj保存到文件file中去。protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可打印的ASCII
系统 2019-09-27 17:47:04 2129
作为一个概念而言,正则表达式对于Python来说并不是独有的。但是,Python中的正则表达式在实际使用过程中还是有一些细小的差别。本文是一系列关于Python正则表达式文章的其中一部分。在这个系列的第一篇文章中,我们将重点讨论如何使用Python中的正则表达式并突出Python中一些独有的特性。我们将介绍Python中对字符串进行搜索和查找的一些方法。然后我们讲讨论如何使用分组来处理我们查找到的匹配对象的子项。我们有兴趣使用的Python中正则表达式的模
系统 2019-09-27 17:46:54 2129
Scrapy官方介绍是Anopensourceandcollaborativeframeworkforextractingthedatayouneedfromwebsites.Inafast,simple,yetextensibleway.意思就是一个开源和协作框架,用于以快速,简单,可扩展的方式从网站中提取所需的数据。环境准备本文项目使用环境及工具如下python3scrapymongodbpython3scrapy的安装就不再叙述mongodb是用来存
系统 2019-09-27 17:46:17 2129
python中的and从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值。or也是从左到有计算表达式,返回第一个为真的值。复制代码代码如下:IDLE1.2.4>>>'a'and'b''b'>>>''and'b'''>>>'a'or'b''a'>>>''or'b''b'类似三目表达式的用法:bool?a:b复制代码代码如下:>>>a='first'>>>b='second'>>>1andaorb#等价于bool=true时的情况'
系统 2019-09-27 17:46:14 2129
在平时的工程中,我们在构建工程时,常常需要用到配置文件,用来配置项目的一些信息,比如数据库,请求网址,文件夹,线程、进程数等信息,这样就可以方便我们通过修改配置文件中的参数来很好地完成整个项目的功能修改或开发。配置文件一般区别于Python代码,会单独存放在一个文件夹中,方便管理,常见的配置文件格式有.conf,.ini,.yaml等。本文使用Python中的configparser模块来处理conf、ini配置文件。首先需要安装configparser模
系统 2019-09-27 17:45:29 2129
背景最近在写一个测试工具箱,里面有一个bug记录系统,因为后台我是用Django和MongoDB来实现的,就遇到了一个问题,要如何实现一个自增的字段。传统的关系型数据库要实现起来是非常容易,只要直接设置一个自增字段就行了,插入数据时不用管这个键值,只管自己处理的数据就行了,会自动实现自增的功能,但是非关系型数据库好像没有这个功能(或者我不知道)。百度之后发现都是MongoDB的设置方法,并不是我想要的。解决思路百度没有找到好的思路,那就只能自己解决了,我的
系统 2019-09-27 17:37:37 2129
本文实例讲述了python迭代器的简单用法,分享给大家供大家参考。具体分析如下:生成器表达式是用来生成函数调用时序列参数的一种迭代器写法生成器对象可以遍历或转化为列表(或元组等数据结构),但不能切片(slicing)。当函数的唯一的实参是可迭代序列时,便可以去掉生成器表达式两端>的圆括号,写出更优雅的代码:>>>>sum(iforiinxrange(10))45sum声明:sum(iterable[,start])Sumsstartandtheitemso
系统 2019-09-27 17:56:32 2128
我们经常需要在后台运行一些python脚本,来监控系统或者做一些其他事情;但是由于各种各样的原因,排除python脚本代码的问题,脚本运行过程中会挂掉。为了不天天耗在上面等重启,可以制作shell脚本对程序予以监控,对于意外中断的程序自动重启。以控制python自动重启的shell脚本为例:cdDesktopvimrun.sh#新建名为run的shell脚本写入(此处以名为run的Python脚本为例)#!/bin/bashwhile[1];dopytho
系统 2019-09-27 17:56:17 2128
在Python中存储数据到文件中时,简单的做法是调用open函数执行文件写入操作,但是这样做的话,当我们要重新读取文件内容时,就会出现类型不匹配的情况,因为读取的都是字符串的形式,所以还需要进行类型转换,这样不简洁。或者使用eval函数把字符串转换为对象,但是有时它过于强大,它会执行Python的任何表达式,甚至做出威胁系统正常工作的表达式,这样做不安全。如果想存储Python原生对象,但又无法信赖文件的数据来源,那么pickle模块会是个理想的选择。pi
系统 2019-09-27 17:55:55 2128