
python驿站
库网站https://pypi.org/
鞋子不会飞
突破认识看世界
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Python闭包and装饰器之类装饰器的使用
系列文章目录Python闭包and装饰器系列文章目录一、类装饰器的介绍总结一、类装饰器的介绍装饰器还有一种特殊的用法就是类装饰器,就是通过定义一个类来装饰函数。类装饰器示例代码:`class Check(object): def __init__(self, fn): # 初始化操作在此完成 self.__fn = fn # 实现__call__方法,表示对象是一个可调用对象,可以像调用函数一样进行调用。 def __call__(s原创 2020-11-02 21:56:53 · 320 阅读 · 0 评论 -
Python闭包and装饰器之带有参数的装饰器
Python闭包and装饰器带有参数的装饰器Python闭包and装饰器一、带有参数的装饰器介绍总结一、带有参数的装饰器介绍带有参数的装饰器就是使用装饰器装饰函数的时候可以传入指定参数,语法格式: @装饰器(参数,…)错误写法:def decorator(fn, flag): def inner(num1, num2): if flag == "+": print("--正在努力加法计算--") elif flag == "-"原创 2020-11-02 21:46:42 · 916 阅读 · 0 评论 -
Python闭包and装饰器之多个装饰器的使用
Python闭包and装饰器多个装饰器的使用Python闭包and装饰器一、多个装饰器的使用示例代码一、多个装饰器的使用示例代码def make_div(func): """对被装饰的函数的返回值 div标签""" def inner(*args, **kwargs): return "<div>" + func() + "</div>" return innerdef make_p(func): """对被装饰的函数原创 2020-11-02 21:33:32 · 158 阅读 · 0 评论 -
Python闭包and装饰器之万能装饰器
Python闭包and装饰器万能装饰器目录Python闭包and装饰器一、装饰带有参数的函数二、 装饰带有返回值的函数三、装饰带有不定长参数的函数四、万能装饰器(通用装饰器)一、装饰带有参数的函数# 添加输出日志的功能def logging(fn): def inner(num1, num2): print("--装饰计算前--") fn(num1, num2) print("--装饰计算后--") return inner原创 2020-11-02 21:24:32 · 209 阅读 · 0 评论 -
Python闭包and装饰器之装饰器
Python闭包and装饰器之装饰器装饰器目录Python闭包and装饰器之装饰器一、1. 装饰器的定义二、装饰器的示例代码三、装饰器的语法糖写法总结一、1. 装饰器的定义就是给已有函数增加额外功能的函数,它本质上就是一个闭包函数。装饰器的功能特点:不修改已有函数的源代码不修改已有函数的调用方式给已有函数增加额外的功能二、装饰器的示例代码代码如下(示例):# 添加一个登录验证的功能def check(fn): def inner(): print("请原创 2020-11-02 20:49:17 · 331 阅读 · 1 评论 -
Python闭包and装饰器之修改闭包内使用的外部变量
修改闭包内使用的外部变量1 修改闭包内使用的外部变量的错误示例:2 修改闭包内使用的外部变量的正确示例:修改闭包内使用的外部变量所需要的关键字 nonlocal1 修改闭包内使用的外部变量的错误示例:# 定义一个外部函数def func_out(num1): # 定义一个内部函数 def func_inner(num2): # 这里本意想要修改外部num1的值,实际上是在内部函数定义了一个局部变量num1 num1 = 10 #原创 2020-11-02 20:33:53 · 216 阅读 · 0 评论 -
Python闭包and装饰器之闭包
Python闭包and装饰器之闭包1. 闭包的介绍2. 闭包的构成条件3. 简单闭包的示例代码4. 闭包的作用1. 闭包的介绍我们知道当函数调用完,函数内定义的变量都销毁了,但是我们有时候需要保存函数内的这个变量,每次在这个变量的基础上完成一些列的操作,比如: 每次在这个变量的基础上和其它数字进行求和计算,那怎么办呢?我们就可以通过闭包来解决这个需求。闭包的定义:在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,我们把这个使用外部函数变量的内部函数称为闭包。2.原创 2020-11-02 20:23:20 · 904 阅读 · 0 评论 -
数据编码和解码
数据编码和解码str->bytes:encode编码bytes->str:decode解码字符串通过编码成为字节码,字节码通过解码成为字符串。>>> text = '我是文本'>>> text'我是文本'>>> print(text)我是文本>>> bytesText = text.encode()>>> bytesTextb'\xe6\x88\x91\xe6\x98\xaf\xe原创 2020-10-25 21:33:49 · 1443 阅读 · 1 评论 -
进程_线程_协程对比
进程_线程_协程对比1. 进程、线程、协程之间的关系2.进程、线程、线程的对比1. 进程、线程、协程之间的关系一个进程至少有一个线程,进程里面可以有多个线程一个线程里面可以有多个协程2.进程、线程、线程的对比进程是资源分配的单位线程是操作系统调度的单位进程切换需要的资源最大,效率很低线程切换需要的资源一般,效率一般(当然了在不考虑GIL的情况下)协程切换任务资源很小,效率高多进程、多线程根据cpu核数不一样可能是并行的,但是协程是在一个线程中 所以是并发...原创 2020-10-19 21:31:53 · 348 阅读 · 0 评论 -
Python协程之gevent
Python协程之gevent1. gevent的介绍2. gevent的使用3. gevent切换执行4. 给程序打补丁5. 注意1. gevent的介绍greenlet已经实现了协程,但是这个还要人工切换,这里介绍一个比greenlet更强大而且能够自动切换任务的第三方库,那就是gevent。gevent内部封装的greenlet,其原理是当一个greenlet遇到IO(指的是input output 输入输出,比如网络、文件操作等)操作时,比如访问网络,就自动切换到其他的greenlet,等到原创 2020-10-18 23:41:58 · 3470 阅读 · 0 评论 -
Python多任务之协程之greenlet
Python协程之greenlet1.greentlet的介绍1.greentlet的介绍为了更好使用协程来完成多任务,python中的greenlet模块对其封装,从而使得切换任务变的更加简单使用如下命令安装greenlet模块:pip3 install greenletimport timeimport greenlet# 任务1def work1(): for i in range(5): print("work1...") time.s原创 2020-10-18 23:30:04 · 351 阅读 · 0 评论 -
多任务之协程
协程1.协程的概念1.协程的概念协程,又称微线程,纤程,也称为用户级线程,在不开辟线程的基础上完成多任务,也就是在单线程的情况下完成多任务,多个任务按照一定顺序交替执行 ,通俗理解只要在def里面只看到一个yield关键字表示就是协程协程是也是实现多任务的一种方式协程yield的代码实现import timedef work1(): while True: print("----work1---") yield time.slee原创 2020-10-18 23:26:14 · 192 阅读 · 0 评论 -
生成器
生成器1. 生成器的概念2. 创建生成器方法13. 创建生成器方法24.生成器使用return关键字5. yield和return的对比6. 使用send方法启动生成器并传参1. 生成器的概念生成器是一类特殊的迭代器,它不需要再像上面的类一样写__iter__()和__next__()方法了, 使用更加方便,它依然可以使用next函数和for循环取值2. 创建生成器方法1第一种方法很简单,只要把一个列表生成式的 [ ] 改成 ( )my_list = [i * 2 for i in rang原创 2020-10-18 23:18:50 · 280 阅读 · 0 评论 -
迭代器
迭代器1. 自定义迭代器对象2. iter()函数与next()函数3. for循环的本质4. 迭代器的应用场景1. 自定义迭代器对象 自定义迭代器对象: 在类里面定义__iter__和__next__方法创建的对象就是迭代器对象from collections import Iterablefrom collections import Iterator# 自定义可迭代对象: 在类里面定义__iter__方法创建的对象就是可迭代对象class MyList(object): de原创 2020-10-18 23:03:47 · 106 阅读 · 0 评论 -
迭代
迭代1. 迭代的概念2. 可迭代对象4. 自定义可迭代对象1. 迭代的概念#使用for循环遍历取值的过程叫做迭代,比如:使用for循环遍历列表获取值的过程for value in [2, 3, 4]: print(value)2. 可迭代对象使用for循环遍历取值的对象叫做可迭代对象, 比如:列表、元组、字典、集合、range、字符串判断对象是否是可迭代对象# 元组,列表,字典,字符串,集合,range都是可迭代对象from collections import Iter原创 2020-10-18 22:55:03 · 300 阅读 · 0 评论 -
多任务之进程池Pool
进程池Pool1. 进程池的概念2. 进程池同步执行任务3. 进程池异步执行任务4. 文件夹拷贝器-多任务1. 进程池的概念池子里面放的是进程,进程池会根据任务执行情况自动创建进程,而且尽量少创建进程,合理利用进程池中的进程完成多任务当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。初始化Pool时,可以指定一个最大原创 2020-10-18 22:37:43 · 337 阅读 · 0 评论 -
多任务之进程间通信-Queue
进程间通信-Queue1. Queue的使用2. 消息队列Queue完成进程间通信的演练1. Queue的使用可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息列队程序,首先用一个小实例来演示一下Queue的工作原理:import multiprocessingimport timeif __name__ == '__main__': # 创建消息队列, 3:表示队列中最大消息个数 queue = multiprocessi原创 2020-10-18 21:27:52 · 298 阅读 · 0 评论 -
多任务之死锁
死锁1. 死锁的概念2. 死锁示例3. 避免死锁1. 死锁的概念死锁: 一直等待对方释放锁的情景就是死锁为了更好的理解死锁,来看一个现实生活的效果图:说明:现实社会中,男女双方一直等待对方先道歉的这种行为就好比是死锁。死锁的结果会造成应用程序的停止响应,不能再处理其它任务了。2. 死锁示例需求:根据下标在列表中取值, 保证同一时刻只能有一个线程去取值import threadingimport time# 创建互斥锁lock = threading.Lock()#原创 2020-10-17 19:55:04 · 316 阅读 · 0 评论 -
多任务之互斥锁
互斥锁1.互斥锁的概念2. 互斥锁的使用3. 使用互斥锁完成2个线程对同一个全局变量各加100万次的操作1.互斥锁的概念互斥锁: 对共享数据进行锁定,保证同一时刻只能有一个线程去操作。注意:互斥锁是多个线程一起去抢,抢到锁的线程先执行,没有抢到锁的线程需要等待,等互斥锁使用完释放后,其它等待的线程再去抢这个锁。2. 互斥锁的使用threading模块中定义了Lock变量,这个变量本质上是一个函数,通过调用这个函数可以获取一把互斥锁。互斥锁使用步骤:# 创建锁mutex = threadi原创 2020-10-17 19:48:33 · 513 阅读 · 0 评论 -
多任务之线程的注意点
线程的注意点1. 线程的注意点介绍2. 线程之间执行是无序的3. 主线程会等待所有的子线程执行结束再结束3. 线程之间共享全局变量4. 线程之间共享全局变量数据出现错误问题1. 线程的注意点介绍线程之间执行是无序的主线程会等待所有的子线程执行结束再结束线程之间共享全局变量线程之间共享全局变量数据出现错误问题2. 线程之间执行是无序的import threadingimport timedef task(): time.sleep(1) print("当前线程:",原创 2020-10-17 19:28:35 · 101 阅读 · 0 评论 -
Python多任务之多线程的使用
Python多线程的使用1. 导入线程模块2. 线程类Thread参数说明3. 启动线程4. 多线程完成多任务的代码1. 导入线程模块#导入线程模块import threading2. 线程类Thread参数说明Thread([group [, target [, name [, args [, kwargs]]]]])group: 线程组,目前只能使用Nonetarget: 执行的目标任务名args: 以元组的方式给执行任务传参kwargs: 以字典方式给执行任务传参name:原创 2020-10-17 18:43:54 · 570 阅读 · 0 评论 -
多任务之线程(threading)
多任务之线程1. 线程的介绍2. 线程的概念3. 线程的作用1. 线程的介绍想要实现多任务除了使用进程,还可以使用线程来完成,线程是实现多任务的另外一种方式。2. 线程的概念线程是进程中执行代码的一个分支,每个执行分支(线程)要想工作执行代码需要cpu进行调度,也就是说线程是cpu调度的基本单位,每个进程至少都有一个线程,而这个线程就是我们通常说的主线程。3. 线程的作用多线程可以完成多任务多线程效果图:...原创 2020-10-17 18:39:51 · 171 阅读 · 0 评论 -
多任务之进程的注意点
进程的注意点1. 进程的注意点介绍2. 进程之间不共享全局变量3. 进程之间不共享全局变量的小结4. 主进程会等待所有的子进程执行结束再结束5. 主进程会等待所有的子进程执行结束再结束的小结1. 进程的注意点介绍进程之间不共享全局变量主进程会等待所有的子进程执行结束再结束2. 进程之间不共享全局变量import multiprocessingimport time# 定义全局变量g_list = list()# 添加数据的任务def add_data(): for i原创 2020-10-17 18:30:23 · 149 阅读 · 0 评论 -
Pyhon多进程的使用(multiprocessing)
Pyhon多进程的使用1 导入进程包2. Process进程类的说明3. 多进程完成多任务的代码3.1 demo(示例)3.2 获取进程编号3.3 进程执行带有参数的任务3.3.1 进程执行带有参数的任务的介绍1 导入进程包#导入进程包import multiprocessing2. Process进程类的说明Process([group [, target [, name [, args [, kwargs]]]]])group:指定进程组,目前只能使用Nonetarget:执行的目原创 2020-10-17 16:02:18 · 222 阅读 · 0 评论 -
多任务处理之进程(Process)
多任务处理之进程1. 进程的介绍2. 进程的概念3. 进程的作用1. 进程的介绍 想要实现多任务可以使用进程来完成,进程是实现多任务的一种方式。2. 进程的概念一个正在运行的程序或者软件就是一个进程,它是操作系统进行资源分配的基本单位,也就是说每启动一个进程,操作系统都会给其分配一定的运行资源(内存资源)保证进程的运行。比如:现实生活中的公司可以理解成是一个进程,公司提供办公资源(电脑、办公桌椅等),真正干活的是员工,员工可以理解成线程。注意:一个程序运行后至少有一个进程,一个进程默认有一个原创 2020-10-17 13:53:15 · 621 阅读 · 0 评论 -
多任务处理
多任务处理1. 多任务的介绍2. 多任务的概念3. 多任务的执行方式1. 多任务的介绍多任务的最大好处是充分利用CPU资源,提高程序的执行效率。2. 多任务的概念多任务是指在同一时间内执行多个任务,例如: 现在电脑安装的操作系统都是多任务操作系统,可以同时运行着多个软件。多任务效果图:3. 多任务的执行方式并发并行并发:在一段时间内交替去执行任务。例如:对于单核cpu处理多任务,操作系统轮流让各个软件交替执行,假如:软件1执行0.01秒,切换到软件2,软件2执行0.01秒,原创 2020-10-15 22:45:59 · 1810 阅读 · 0 评论 -
PyQt5之QtDesigner及相关插件的安装和设置
目录这部分内容包括PyQt5+QtDesigner以及其它工具包的安装、将QtDesigner和PyUIC链接到PyCharm的外部工具库、使用QtDesigner生成ui文件并将其转换成py文件并编写主函数来显示该界面。1、PyQt、QtDesigner及其它工具包的安装PyQt和QtDesigner的安装和链接到PyCharm的方法可参考链接:Pycharm+Python+PyQt5使用我是参照该链接学习,并根据自己的需要做了一些修改,下面介绍一下我的安装过程。1)安装PyQt5、QtDe原创 2020-06-07 15:06:21 · 2713 阅读 · 0 评论 -
python库之sqlparse碎片拾遗
目录1 sqlparse简介1 sqlparse简介sqlparse有几个最简单的工具:split,format,parse,分别是提取sql单个语句、格式化sql的语句以及解析sql例:CREATE TABLE TABLE_TO_CREATE NOLOGGING ASSELECT DISTINCT A.COLA, B.COLB, DECODE(A.DECODE_CONDITIO...原创 2020-04-28 21:46:26 · 2189 阅读 · 0 评论 -
PyQt5碎片拾遗
目录PyQt5说明PyQt4和PyQt5的区别PyQt5说明pyqt5是一套Python绑定Digia QT5应用的框架。它可用于Python 2和3。本教程使用Python 3。Qt库是最强大的GUI库之一。pyqt5的官方网站http://www.riverbankcomputing.co.uk/news。pyqt5做为Python的一个模块,它有620多个类和6000个函数和方法。这...原创 2020-04-28 21:03:47 · 287 阅读 · 0 评论 -
python命令行运行程序两种方式的区别(python xx.py 和python -m xx)
python命令行运行程序两种方式的区别(python xx.py 和python -m xx)1 - python xx.py是将该文件所在的路径添加到模块查询路径中,如果导入过其他模块,可能会报错(ModuleNotFoundError)2 - python -m xx是将当前路径添加到模块查询路径中(由自己定义)...原创 2020-04-12 21:09:59 · 3533 阅读 · 0 评论 -
如何将python文件做成自动化脚本
如何将python文件做成自动化脚本工作过程中有可能会将.py文件做成脚本,例如自动化运维,封装代码步骤:1 - 设置shebang符号,指定改文件执行的编译器2 - 生成执行文件对应的软链接(绝对路径)3 - 给软链接增加执行权限4 - 将软链接拷贝到全局命令路径中 /usr/local/bin...原创 2020-04-12 21:02:30 · 1554 阅读 · 0 评论 -
分布式ID
目录1 方案选择2 黑马头条1 方案选择UUIDUUID是通用唯一识别码(Universally Unique Identifier)的缩写,开放软件基金会(OSF)规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素。利用这些元素来生成UUID。UUID是由128位二进制组成,一般转换成十六进制,然后用String表示。550e840...原创 2020-04-12 02:53:57 · 1129 阅读 · 0 评论 -
flask项目之SQLAlchemy操作(4)
目录1 新增1.1 单个添加1.2 批量添加2 删除2.1 方式一2.1 方式二3 更新3.1 方式一3.2 方式二4 查询4.1 all()4.2 first()4.3 get()4.4 filter_by4.5 filter4.6 offset4.7 limit4.8 order_by4.9 复合查询4.10 优化查询4.11 聚合查询4.12 关联查询1 新增1.1 单个添加user...原创 2020-04-12 02:30:56 · 391 阅读 · 0 评论 -
flask项目之SQLAlchemy映射构建(3)
目录1 简介2 安装3 数据库连接设置4 模型类字段与选项5 构建模型类映射5.1 首先需要创建SQLAlchemy对象:5.2 定义模型类1 简介SQLAlchemy是Python编程语言下的一款开源软件。提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行。SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”。...原创 2020-04-11 23:32:13 · 888 阅读 · 0 评论 -
Pycharm远程开发
目录1 打开「Tools」设置 「Deployment」2 选择SFTP3 设置服务器名字4 设置服务器信息4.1 测试服务器连接是否可用4.2 设置上传代码的目录映射4.3打开设置,设置远程Python解释器4.4 选择已存在的服务器设置4.5 选择Create 复制服务器设置到解释器中4.6 选择远程服务器中虚拟环境里的解释器4.7 设置远程服务器运行代码的目录映射4.8若Pycharm不能自...原创 2020-04-11 22:12:21 · 587 阅读 · 0 评论 -
pycharm使用碎片
pycharm使用碎片1.自定义变量类型提示data = request.form.get("user_name") # type:str 提醒data是一个str对象data.split(",")原创 2020-03-28 22:46:21 · 112 阅读 · 0 评论 -
APScheduler
目录1.安装2.使用方式3.调度器 Scheduler3.1 BlockingScheduler: 作为独立进程时使用3.2 BackgroundScheduler: 在框架程序(如Django、Flask)中使用4.执行器 executors4.1 ThreadPoolExecutor4.2 ProcessPoolExecutor5. 触发器 Trigger1) date 在特定的时间日期执行2...原创 2020-03-25 20:32:38 · 227 阅读 · 0 评论 -
python代码碎片
python代码碎片1.接口调用main.pyfrom query_hbase.tools import Workerdef main(): """ 调用接口入口函数 :param args: :param kwargs: :return: """ # 程序开关 activate = True # 循环计数器 ...原创 2020-03-04 22:37:03 · 276 阅读 · 0 评论 -
python模块之操作excel文件
python模块之操作excel文件环境配置下面的环境配置是针对Windows操作系统的,其他操作系统差别不是很大,可以参考一下。我使用的Python版本号是2.7.12,如果你的Python是2.x,请确保在2.6以上。在Python 3.x上可能会有些不太一样,所以要注意,可以参考其他的文档和博客。Python自带的csv模块可以处理.csv文件。xlrd和xlwt两个模块分别用来...原创 2020-02-24 22:50:09 · 303 阅读 · 0 评论 -
python模块之PyMySQL的使用
PyMySQL的使用1. 思考如何实现将100000条数据插入到MySQL数据库?答案:如果使用之前学习的MySQL客户端来完成这个操作,那么这个工作量无疑是巨大的,我们可以通过使用程序代码的方式去连接MySQL数据库,然后对MySQL数据库进行增删改查的方式,实现10000条数据的插入,像这样使用代码的方式操作数据库就称为数据库编程。2. Python程序操作MySQL数据库安装p...原创 2020-02-20 23:12:11 · 448 阅读 · 0 评论