观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。一个软件系统常常要求在某一个对象的状态发生变化的时候,某些其它的对象做出相应的改变。做到这一点的设计方案有很
系统 2019-08-12 09:29:46 1897
使用过anaconda环境下打包py文件的一点感悟,使用的是pyinstaller+anaconda环境下打包py文件打包:pyinstaller-F-w-ilogo.icoxxxx.py-F:强制打包-w:不带后台命令窗口-i:使用logo图标的地址需要打包的文件遇到的问题:1.首先对于使用anaconda打包py文件是存在问题的;1)打包出来的exe会很大,会打包很多关联库;2)而其中的一些关联库是没有用,而导入这些库会拖慢程序运行的效率。解决:使用虚
系统 2019-09-27 17:57:11 1896
在编写计算机程序时,通常能够区分正常和异常(不正常)情况。异常事件可能是错误(如试图除以零),也可能是通常不会发生的事情。Python使用异常对象来表示异常状态,并在遇到错误时引发异常。异常对象未被处理(或捕获)时,程序将终止并显示一条错误消息(traceback)。#试图除以零的报错print(1/0)#Traceback(mostrecentcalllast):#print(1/0)#ZeroDivisionError:divisionbyzero正如
系统 2019-09-27 17:56:38 1896
python类的继承对于许多文章讲解python类的继承,大多数都是说一些什么oop,多态等概念,我认为这样可能对有一定基础的开发者帮助不是那么大,不如直接用在各种情况下所写的代码,来展示对于某一种代码情况,代码运行会有什么效果。这样可能对开发者的帮助更大。不说废话,直接上代码。这里不区分经典类和新式类,下面分析的对新式类和经典类都适用对于类中的__init__函数,只是一个初始化是调用的一个函数(ps:初始化和创建实例并不是一个过程,实例的创建是通过一个
系统 2019-09-27 17:56:17 1896
整理Python中常用的函数一,把字符串形式的list转换为list使用ast模块中的literal_eval函数来实现,把字符串形式的list转换为Python的基础类型listfromastimportliteral_evalstr_list="[1838,13735,8285,35386]"mylist=literal_eval(str_list)type(mylist)二,filterfilter()函数用于过滤序列,过滤掉不符合条件的元素,返回由
系统 2019-09-27 17:55:48 1896
python支持可变参数:可以使用*args、**kwargs实现*args是可变的positionalarguments列表,是一个tuple。**kwargs是可变的keywordarguments列表,是一个dict。*args必须位于**kwargs之前,因为positionalarguments必须位于keywordarguments之前。*args、**kwargs的使用:函数定义:是一个将参数pack的过程函数调用:将参数unpack例子:d
系统 2019-09-27 17:55:35 1896
之前在写多线程与多进程的时候,因为一般情况下都是各自完成各自的任务,各个子线程或者各个子进程之前并没有太多的联系,如果需要通信的话我会使用队列或者数据库来完成,但是最近我在写一些多线程与多进程的代码时,发现如果它们需要用到共享变量的话,需要有一些注意的地方多线程之间的共享数据标准数据类型在线程间共享看以下代码#coding:utf-8importthreadingdeftest(name,data):print("inthread{}nameis{}".f
系统 2019-09-27 17:55:28 1896
生活中,有时候我们需要对一些重要的文件进行加密,Python提供了诸如hashlib,base64等便于使用的加密库。但对于日常学习而言,我们可以借助异或操作,实现一个简单的文件加密程序,从而强化自身的编程能力。记得给公众号加个星标,不会错过精彩内容。基础知识在Python中异或操作符为:^,也可以记作XOR。按位异或的意思是:相同值异或为0,不同值异或为1。具体来讲,有四种可能:0^0=0,0^1=1,1^0=1,1^1=0。我们还可总结出规律(A为0或
系统 2019-09-27 17:54:26 1896
importthreadingimportqueueimporttime'''queue.qsize()返回队列的大小queue.empty()如果队列为空,返回True,反之Falsequeue.full()如果队列满了,返回True,反之Falsequeue.full与maxsize大小对应queue.get([block[,timeout]])获取队列,timeout等待时间queue.get_nowait()相当queue.get(False)qu
系统 2019-09-27 17:53:25 1896
python生成一个日期列表首先导入pandasimportpandasaspddefget_date_list(begin_date,end_date):date_list=[x.strftime('%Y-%m-%d')forxinlist(pd.date_range(start=begin_date,end=end_date))]returndate_list###可以测试print(get_date_list('2018-06-01','2018-0
系统 2019-09-27 17:53:02 1896