函数也是对象要理解Python装饰器,首先要明白在Python中,函数也是一种对象,因此可以把定义函数时的函数名看作是函数对象的一个引用。既然是引用,因此可以将函数赋值给一个变量,也可以把函数作为一个参数传递或返回。同时,函数体中也可以再定义函数。装饰器本质可以通过编写一个纯函数的例子来还原装饰器所要做的事。defdecorator(func):defwrap():print("Doingsometingbeforeexecutingfunc()")fun
系统 2019-09-27 17:55:37 2319
在python开发的过程中,经常会遇到需要打印各种信息。海量的信息堆砌在控制台中,就会导致信息都混在一起,降低了重要信息的可读性。这时候,如果能给重要的信息加上字体颜色,那么就会更加方便用户阅读了。当然了,控制台的展示效果有限,并不能像前段一样炫酷,只能做一些简单的设置。不过站在可读性的角度来看,已经好很多了。书写格式:开头部分:\033[显示方式;前景色;背景色m+结尾部分:\033[0m注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以
系统 2019-09-27 17:55:17 2319
讨论采用*模糊导入或者单独导入变量会在不同文件生成不同的对象.a└──mypackage├──a.py├──b.py├──c.pyb.py内容如下importcdefb():print("b方法开始")print(c.config)print(id(c.config))c.py内容如下config="ONCE"a.py内容如下importbimportcdefa():print(c.config)c.config="TWO"print(c.config)p
系统 2019-09-27 17:51:09 2319
使用Python解释器1.1Python安装从源码编译安装python./configuremakemaketestsudomakeinstall默认python解释器安装在/usr/local/bin/python3.8,可以将/usr/local/bin放到path搜索路径中。在windows系统上,python一般安装在C:\Python38,在windows命令行中,执行命令setpath=%path%;C:\python38将该路径添加到path
系统 2019-09-27 17:49:19 2319
python中判断一个对象是否为函数两种方式:使用hasattr,通过验证有没有__call__函数进行判断deftest():print"hello"printhasattr(test,"__call__")通过使用callable进行判断printcallable(test)另外:查看内置函数都有哪些可以使用如下方式printglobals()["__builtins__"].__dict__输出:{‘ArithmeticError’:Arithmet
系统 2019-09-27 17:48:41 2319
目前手边的一些工作,需要实现声音播放功能,而且仅支持wav声音格式。现在,一些网站上支持文字转语音功能,但是生成的都是MP3文件,这样还需要额外的软件来转成wav文件,十分麻烦。后来,研究Python,发现Python可以很容易的实现上面的功能。步骤如下,1。使用百度语音实现TTS(TextToSpeech),生成mp3文件;2。使用pydub和ffmpeg实现mp3转wav格式。下面,先上简单的示例代码,然后对代码作简单的分析。#!/usr/bin/py
系统 2019-09-27 17:48:39 2319
Python使用type关键字创建类打开命令行窗口,输入python,进入python交互环境python一般创建类使用class关键字即可,测试命令如下:classCoo:passobj1=Coo()print(obj1)c=Cooobj2=c()print(obj2)type关键字可以动态的创建类,接收参数(类名,父类元组,属性的字典),如创建一个类,没有父类,没有属性,命令如下:Test=type('Test',(),{})print(Test)t=
系统 2019-09-27 17:46:03 2319
本文以实例形式讲述了Python中切片操作的用法,分享给大家供大家参考借鉴,具体如下:取一个list或tuple的部分元素是非常常见的操作。比如,一个list如下:>>>L=['Michael','Sarah','Tracy','Bob','Jack']取前3个元素,应该怎么做呢?比较笨的办法如下:>>>[L[0],L[1],L[2]]['Michael','Sarah','Tracy']之所以是笨办法是因为扩展一下,取前N个元素就没辙了。取前N个元素,也
系统 2019-09-27 17:45:29 2319
函数和模块的使用在讲解本章节的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解。$$x_1+x_2+x_3+x_4=8$$事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案。想到这一点问题的答案就呼之欲出了。$$C_M^N=\frac{M!}{N!(M-N)!},\text{(M=7,N=3)}$$可以用Python的程序来计算出这个值,代码如下所示。"""输入M和N计算C(M,N)"""m=int(input('m=
系统 2019-09-27 17:38:21 2319
IntroductionSTLprovidesatemplatebasedsetofcollectionclasses,andmethodsforworkingonthosecollections.Thecollectionclassesgivethedeveloperaccesstofastandefficientcollections.Whilethemethods,whichareknownasthealgorithms,providetemplat
系统 2019-08-29 23:01:45 2319
学完画板,不过几天时间又学会做了五子棋,五子棋的做法就比画图板稍微难了一点点,很多步骤都是一样的,首先五子棋也需要一个界面,也需要监听器,比画板难的就是要计算一些数据,比如棋盘大小,棋子大小,然后还要写算法判断输赢这是五子棋工程1.五子棋界面也就是JFrame组建,前面写画板的界面,这里就不多说,只是这里多写了一个贴图,不给界面贴图的话,就要自己画棋盘,画棋子,如果贴图的话,就不用话了,只要用g.drawImage方法贴图,然后计算棋盘大小,棋子大小,以及
系统 2019-08-29 22:40:26 2319
车牌、验证码识别的普通方法为:1.将图片灰度化与二值化。2.去噪,然后切割成一个一个的字符。3.提取每一个字符的特征,生成特征矢量或特征矩阵。4.分类与学习。将特征矢量或特征矩阵与样本库进行比对,挑选出相似的那类样本,将这类样本的值作为输出结果。下面借着代码,描述一下上述过程。1.图片的灰度化与二值化这样做的目的是将图片的每一个象素变成0或者255,以便以计算。同时,也可以去除部分噪音。图片的灰度化与二值化的前提是bmp图片,如果不是,则需要首先转换为bm
系统 2019-08-29 22:07:03 2319
之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。废话不多说了,先来看一下JDK的动态是怎么用的。Java代码packagedynamic.proxy;importjava.lang.reflect.InvocationHandler;importjava.lang.reflect.Method;importj
系统 2019-08-29 22:02:51 2319
Trie树,又称字典树,单词查找树。它来源于retrieval(检索)中取中间四个字符构成(读音同try)。用于存储大量的字符串以便支持快速模式匹配。主要应用在信息检索领域。Trie有三种结构:标准trie(standardtrie)、压缩trie、后缀trie(suffixtrie)。最后一种将在《字符串处理4:后缀树》中详细讲,这里只将前两种。1.标准Trie(standardtrie)标准Trie树的结构:所有含有公共前缀的字符串将挂在树中同一个结点
系统 2019-08-29 21:59:51 2319
uuencode是将二进制文件转换为文本文件的过程,转换后的文件可以通过纯文本e-mail进行传输,在接收方对该文件进行uudecode,即将其转换为初始的二进制文件。uu编码uuencode编码方式用于将任意的二进制文件转换为文本文件,比如email.转换后的文件中仅包含可打印字符.uuencode运算法则将连续的3字节编码转换成4字节(8-bit到6-bit)的可打印字符.该编码的效率高于Hex格式.从二进制文件中读取3字节的数据,表示如下(a7表示a
系统 2019-08-12 09:30:33 2319