引言logging的基本用法网上很多,这里就不介绍了。在引入正文之前,先来看一个需求:假设需要将某功能封装成类库供他人使用,如何处理类库中的日志?数年前在一个C#开发的项目中,我用了这样的方法:定义一个logging基类,所有需要用到日志的类都继承这个基类,这个基类中定义一个LogHandler事件,该事件用于实现具体的记录日志动作,同时可以通过将类A的LogHandler委托挂到类B的LogHandler上,实现将两个类的日志信息添加到一起。自从看了py
系统 2019-09-27 17:47:37 1830
PythonSocket模块中包含一些有用IP转换函数,说明如下:socket.ntohl(x)//类似于C语言的ntohl(x)把32位正整数从网络序转换成主机字节序。socket.ntohs(x)//类似于C语言的ntohs(x)把16位正整数从网络序转换成主机字节序。socket.htonl(x)//类似于C语言的htonl(x)把32位正整数从主机字节序转换成网络序。socket.htons(x)//类似于C语言的htons(x)把16位正整数从主
系统 2019-09-27 17:46:35 1830
在表达式中引用变量时,Python会按照如下的顺序遍历各个作用域,寻找该变量:当前函数作用域任何外围作用域(比如包含当前函数的其他函数)global作用域,即代码所在的模块的作用域如果上述作用域内都找不到变量,就会报NameError异常。但是对变量赋值时,规则会有所不同。如果当前作用域变量已存在,那么其值会被替换。如果不存在,则会视为在当前作用域定义新变量,而不是向外围作用域中寻找。如下函数deffunction():flag=Truedefhelper
系统 2019-09-27 17:46:14 1830
一、可变对象与非可变对象想要理解浅拷贝与深拷贝就必须得先明白可变对象与非可变对象。可变对象有:list,dict,set不可变对象有:int,float,bool,str,tuple。两者区别:对于可变对象,其值改变是在原地址上操作,不会创建新的内存地址。对于不可变对象其值改变是直接创建新的内存地址。二、赋值操作符‘=’表示对象的引用。python里面的赋值操作符‘=’实际上是对象的引用,其并没有进行复制操作。如果如果赋值操作符右边的操作数是字面值,比如字
系统 2019-09-27 17:46:11 1830
本文以数值计算为例讲述了Python中函数的用法,分享给大家供大家参考借鉴之用。具体如下:我们都知道圆的面积计算公式为:S=πr2当我们知道半径r的值时,就可以根据公式计算出面积。假设我们需要计算3个不同大小的圆的面积:r1=12.34r2=9.08r3=73.1s1=3.14*r1*r1s2=3.14*r2*r2s3=3.14*r3*r3当代码出现有规律的重复的时候,你就需要当心了,每次写3.14*x*x不仅很麻烦,而且,如果要把3.14改成3.1415
系统 2019-09-27 17:45:31 1830
本文实例为大家分享了pythonopenCV获取人脸部分并存储的具体代码,供大家参考,具体内容如下#-*-coding:utf-8-*-importcv2importosimporttimeimportbase64importnumpyasnpsave_path='E:\\opencv\\2018-04-24OpenCv\\RAR\\savetest'faceCascade=cv2.CascadeClassifier('./haarcascade_fron
系统 2019-09-27 17:45:26 1830
1lambda函数函数格式是lambdakeys:express匿名函数lambda是一个表达式函数,接受keys参数,返回表达式的值。所以不用return,也没有函数名,经常用在需要key参数的函数中,比如sorted。2元组(),它是以逗号辨别的,而不是小括号。比如一个元素的元组新手经常写成(12),其实他会被解释成单个元素12.正确的写法应该是(12,),在元素后面加上逗号。3模块导入。比如importrandomprintrandom.choice
系统 2019-09-27 17:38:19 1830
我们都知道并发(不是并行)编程目前有四种方式,多进程,多线程,异步,和协程。多进程编程在python中有类似C的os.fork,当然还有更高层封装的multiprocessing标准库,在之前写过的python高可用程序设计方法中提供了类似nginx中masterprocess和workerprocess间信号处理的方式,保证了业务进程的退出可以被主进程感知。多线程编程python中有Thread和threading,在linux下所谓的线程,实际上是LW
系统 2019-09-27 17:38:17 1830
JSON编码支持的基本数据类型为None,bool,int,float和str,以及包含这些类型数据的lists,tuples和dictionaries。对于dictionaries,keys需要是字符串类型(字典中任何非字符串类型的key在编码时会先转换为字符串)。为了遵循JSON规范,你应该只编码Python的lists和dictionaries。而且,在web应用程序中,顶层对象被编码为一个字典是一个标准做法。JSON编码的格式对于Python语法而
系统 2019-09-27 17:38:14 1830
我在工作的时候,在测试环境下使用的数据库跟生产环境的数据库不一致,当我们的测试环境下的数据库完成测试准备更新到生产环境上的数据库时候,需要准备更新脚本,真是一不小心没记下来就会忘了改了哪里,哪里添加了什么,这个真是非常让人头疼。因此我就试着用Python来实现自动的生成更新脚本,以免我这烂记性,记不住事。主要操作如下:1.在原先basedao.py中添加如下方法,这样旧能很方便的获取数据库的数据,为测试数据库和生产数据库做对比打下了基础。defselect
系统 2019-09-27 17:38:12 1830