Python中的装饰器,可以有参数,可以有返回值,那么如何能让这个装饰器既可以装饰没有参数没有返回值的方法,又可以装饰有返回值或者有参数的方法呢?有一种万能装饰器,代码如下: def decorate(test):             #定义一个装饰器函数 def bold(*args,**kwargs):           #*args可以接收任意多个参数, #**args可以接收任意多个字典参数 print('style="font-weight:blod"') res =…
如何手动写一个Python脚本自动爬取Bilibili小视频 国庆结束之余,某个不务正业的码农不好好干活,在B站瞎逛着,毕竟国庆嘛,还让不让人休息了诶-- 我身边的很多小伙伴们在朋友圈里面晒着出去游玩的照片,简直了,人多的不要不要的,长城被堵到水泄不通,老实人想想啊,既然人这么多,哪都不去也是件好事,没事还可以刷刷 B 站 23333 .这时候老实人也有了一个大胆地想法,能不能让这些在旅游景点排队的小伙伴们更快地打发时间呢?考虑到视频的娱乐性和大众观看量,我决定对 B 站新推出的小视频功能下手,…
写一个python的服务监控程序 前言: Redhat下安装Python2.7 rhel6.4自带的是2.6, 发现有的机器是python2.4. 到python网站下载源代码,解压到Redhat上,然后运行下面的命令: # ./configure --prefix=/usr/local/python27 # make # make install 这样安装之后默认不会启用Python2.7,需要使用/usr/local/python27/bin/python2.7调用新版本的python. 而…
写一个客户端,实现给服务端发送hello World字符串,将客户端发送的数据变成大写后返回 本机id是192.168.xx.xy 服务端 import socket soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) soc.bind(('192.168.xx.69', 8080)) #服务端用本机IP地址 soc.listen(5) print('xxxx') conn,addr = soc.accept() print('yyyy…
在虚拟机中安装Linux中的CentOS7系统 https://baijiahao.baidu.com/s?id=1597320700700593557&wfr=spider&for=pc 因为安装的centos7的python版本为2.7我们要将他的版本升为3.5 安装依赖 shell> yum -y install zlib-devel \ bzip2-devel openssl-devel ncurses-devel \ sqlite-devel readline-devel…
2016年是移动直播爆发年,不到半年的时间内无数移动直播App掀起了全民直播的热潮.然而个人觉得直播的门槛相对较高,从推流端到服务端器到播放端,无不需要专业的技术来支撑,仅仅推流端就有不少需要学习的知识.目前大部分直播采用的都是RTMP协议,我这里写一个简单的Demo,帮助大家更好的理解直播推流的过程,主要包括:音视频采集, 音视频编码, 数据打包, RTMP协议等相关的知识等.项目结构分的很清楚,各个模块也用协议进行了分离,方便大家学习不同的模块. 先阐述下推流的整体流程: 建立tcp连接 建…
该方案实现了一个分析C语言的词法分析+解析. 注意: 1.简单语法,部分秕.它可以在本文法的基础上进行扩展,此过程使用自上而下LL(1)语法. 2.自己主动能达到求First 集和 Follow 集. 3.处终结符外(有些硬编码的成分),终结符的文法能够自己定义,也就是说读者能够自己定义文法. 4.为方便理解.C语言的文法描写叙述写成中文. 5.程序将词法分析和语法分析结合起来.词法分析的结果作为语法分析的输入. 6.终于结果在控制台显示的有:词法分析.First集.Follow集.Select…
1. 安装pywin32和pyinstaller pip install pywin32 pip install pyinstaller 2.写一个服务Demo # -*- coding: utf-8 -*- import sys import win32event import win32service import win32serviceutil import servicemanager import subprocess import logging import inspect im…
分析 我们都知道一个可迭代对象可以通过iter()可以返回一个迭代器. 如果想要一个对象称为可迭代对象,即可以使用for,那么必须实现__iter __()方法. 在一个类的实例对象想要变成迭代器,就必须实现__iter__()和__next__()方法. 调用iter()时,在对象内部默认调用__iter__(),即__iter__()的返回值应该是一个迭代器. for的每次循环中或者next()时,都是自动调用迭代器的__next__()方法,并有一个返回值. 实现 class Classm…
一.装饰器 1.用setUp与setUpClass区别 setup():每个测试case运行前运行teardown():每个测试case运行完后执行setUpClass():必须使用@classmethod 装饰器,所有case运行前只运行一次tearDownClass():必须使用@classmethod装饰器,所有case运行完后只运行一次 2.@是修饰符,classmethod是python里的类方法 规范写法: 不规范的方法: 参考:https://www.cnblogs.com/yoy…
#!/usr/bin/env python # -*- coding: utf- -*- import socket import select class MyRequest: """ 从请求头请求体获取的信息封装的request对象中 """ def __init__(self,data): header_body=data.decode('utf-8') header_str,body_str=header_body.split('\r\n…
目标是利用python爬取百度搜索的电影 在类型 地区 年代各个标签下 电影的名字 评分 和图片连接 以及 电影连接 首先我们先在mysql中建表 create table liubo4( id int not null auto_increment, score VARCHAR(50) DEFAULT 0, name VARCHAR(50) DEFAULT 0, Pic VARCHAR(200) DEFAULT 0, dianyingurl VARCHAR(200) DEFAULT 0, le…
在windows环境下进行操作 window+R 输入cmd  创建一个文件夹 mkdir pytxt 创建一个py文件 py.py  用notepad或者记事本等工具进行编辑 或 首先声明python3.5以后没有中文乱码,已经支持中文,就像java的jdk1.6以后都支持中文一样. 进入python交互环境下然后可以进行数据运算,下面命令是简单的加.减.乘.除 下面看一下python2.0版本的中文运行 Python 中文编码 Python2.0 输出 "Hello, World!"…
import os os.chdir(r'C:\Users\Administrator\Desktop')#os.chdir切换到指定目录 with open('a.txt') as today: count=0 for i in today.read(): if i.isupper(): count+=1 print(count) #11…
1.列表 常用方法 作用 参数 append(data) 在尾部添加数据 data-加入到列表中的数据 insert(idx,data) 在指定位置添加数据 idx-索引    data-数据 extend(model) 在列表末尾添加数据模型中的数据 model-列表.元祖.集合 remove(data) 删除列表中指定的数据 data-要删除的列表中的数据 pop(idx) 删除列表中指定索引所对应的数据 idx-要删除的数据的索引 index(data) 查询列表中指定数据的索引 data…
package lianxi; public interface InterfaceA { void printCapitalLetter(); } package lianxi; public interface InterfaceB { void printLowercaseLetter(); } package lianxi; public class Print1 implements InterfaceA, InterfaceB { @Override public void prin…
需求:从接口中获取的一个json数组中有多个对象,每个对象中的值并非都需要,只需查出标题中的几项对应的值即可.且还需要按某个字段排序后依次写到excel 实现方法如下: package jansonDemo; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.apache.poi.xssf.userm…
装饰器: 学前必备知识: def f1(): print "f1" f1() #表示函数执行 f1 #表示函数,指向内存地址 f1 = lambda x: x + 1 f1() # 执行这个lambda表达式,而不再是原来的f1函数,因为函数f1被重新定义了 装饰器代码剖析: 假如有这么一个需求,公司临时规定将某块业务加上访问权限,因为代码太多,又不想改变原有已经封装好的 代码,于是乎,基础平台的同志们想出了这么一个解决办法:利用装饰器解决 那么什么是装饰器?这个问题先留着,直接看代码…
一.生成器 1.什么是生成器? 在python中,一边循环一边计算的机制,称为生成器:generator. 2.生成器有什么优点? 1.节约内存.python在使用生成器时对延迟操作提供了支持.所谓延迟,是指在需要的时候才产生结果,而不是立即产生结果.这样在需要的时候才去调用结果,而不是将结果提前存储起来要节约内存.比如用列表的形式存放较大数据将会占用不少内存.这是生成器的主要好处.比如大数据中,使用生成器来调取数据结果而不是列表来处理数据,因为这样可以节约内存. 2.迭代到下一次的调用时,所使…
python中"生成器"."迭代器"."闭包"."装饰器"的深入理解 一.生成器 1.生成器定义:在python中,一边循环一边计算的机制,称为生成器:generator. a. 语法上和函数类似:生成器函数和常规函数几乎是一样的.它们都是使用def语句进行定义,差别在于,生成器使用yield语句返回一个值,而常规函数使用return语句返回一个值. b. 自动实现迭代器协议:对于生成器,python会自动实现迭代器协议,以便…
装饰器既然可以增加原来函数的功能,那能不能改变传给原函数的参数呢? 我们实验一下,先上代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2020-03-03 20:26:44 # @Author : Flyinghappy (671474@qq.com) # @Link : https://www.cnblogs.com/flyinghappy/ # @Version : $Id$ import time ''' 装饰器的实验…
3.使用两个装饰器当一个装饰器不够用的话,我们就可以用两个装饰器,当然理解起来也就更复杂了,当使用两个装饰器的话,首先将函数与内层装饰器结合然后在与外层装饰器相结合,要理解@语法的时候到底执行了什么,是理解装饰器的关键.这里还是用最简单的例子来进行说明. def outer2(func2): def inner2(*args,**kwargs): print('开始') r=func2(*args,**kwargs) print('结束') return r return inner2 def…
装饰器 1.装饰器的作用 1. 装饰器作用:本质是函数(装饰其他函数)就是为其他函数添加其他功能 2. 装饰器必须准寻得原则: 1)不能修改被装饰函数的源代码 2)不能修改被装饰函数的调用方式 3.实现装饰器知识储备: 1)函数即“变量” 2)高阶函数 3)嵌套函数 高阶函数+潜逃函数=>装饰器 2.使用高阶函数模仿装饰器功能 1)定义:把一个函数名当做实参传给另一个函数 2)返回值中包含函数名 3)下面使用高阶函数虽然可以实现装饰器的一些功能,但是违反了装饰器不能改变调用方式的原则,    …
1.什么是装饰器 装饰器指的是为被装饰对象(别人)添加新功能的工具 装饰器本身可以是任意可调用对象 被装饰器对象也可以是任意可调用对象 2.为何要用装饰器 开放封闭原则:指的是对修改封闭,对扩展开放 装饰器的实现原则: 1.不能修改被装饰对象的源代码 2.不能修改被装饰对象的调用方式 装饰器的目的 就是在遵循原则1和2的前提下为被装饰对象添加新功能 如何用 import time def index(): time.sleep(1) print('index page') def calc(fu…
祭奠碌碌无为的2018,想想其实也不算碌碌无为,至少我还搞懂了装饰器,写了一堆有用没用的玩意 原来觉得装饰器挺难的,直到2018年的最后几天,突然就明白了,难道这就是传说中的开天聪么 言归正传,之所以觉得装饰器难,是因为这东西不按套路出牌,希望大家看完我写的也能在新的一年里有所收货吧 先说下要实现的功能,写一个装饰器,让装饰器可以把时间加到日志的行首,例如 20190101 000001 write log first values 20190101 000001使用装饰器写入,而write l…
    Python作为一个动态的脚本语言,其函数在定义时是不需要指出参数的类型,也不需要指出函数是否有返回值.本文将介绍如何使用python的装饰器来定义一个像C++那样的强类型函数.接下去,先介绍python3中关于函数的定义. 0. python3中的函数定义 举个例子来说吧,比如如下的函数定义:   def fun(a:int, b=1, *c, d, e=2, **f) -> str: pass 这里主要是说几点与python2中不同的点. 1)分号后面表示参数的annotation,…
python中的装饰器主要用于在已有函数实现功能前附加需要输出的信息,下面将用实例展示我如何写装饰器. 首先分别尝试写装饰器装饰一个无参函数和一个有参函数(被装饰函数仅输出,无返回值情况下) def my_log(func): def wrapper(): print('decorator works') func() return wrapper #返回的只是wrapper函数对象,此时并没有运行 @my_log def run(): # run=my_log(run)=wrapper 返回的…
你必须学写Python装饰器的五个理由 ----装饰器能对你所写的代码产生极大的正面作用 作者:Aaron Maxwell,2016年5月5日 Python装饰器是很容易使用的.任何一个会写Python函数的人都能够学会使用装饰器,比如下面这个: 但是,写出一个装饰器是一个完全不一样的技能.而且这也不是,你不得不理解下面这些: 1.闭包 2.如何将函数作为"第一类"参数来使用 3.变量参数 4.参数解包 5.甚至是Python是如何装载源码的一些细节 所有这些都需要花很多时间去理解和掌…
写在前面 本系列目的:希望可以通过一篇文章,不望鞭辟入里,但求在工程应用中得心应手. 装饰器模式是鼎鼎大名的23种设计模式之一.装饰器模式可以在不改变原有代码结构的情况下,扩展代码功能. Python将装饰器作为Python的一种特性,内置了对装饰器的支持,使得Python使用者在使用装饰器时更加方便,合理使用装饰器,可以使Python代码极具美感. 由于设计模式是一套被反复使用的代码设计经验,并不是编码必备的技能.所以在编码过程中,完全放弃使用装饰器.但是如果你不写出pythonic风格的,没…
装饰器 了解一点:写代码要遵循开发封闭原则,虽然这个原则是面向对象开发,但也适用于函数式编程,简单的来说,就是已经实现的功能代码不允许被修改但 可以被扩展即: 封闭:已实现功能的代码块 开发:对扩张开发 #需求对一个现有基础功能函数每个要加上打印一条日志 #用装饰器实现如下: #def outer():              #通常的做法是在定义一个新的函数,将函数加入到需要调用的函数体内# print ('log') def outer(func): #定义装饰器函数 def inter(…