Python
文章平均质量分 64
youaresherlock
江湖人称狗哥!
展开
-
Python代码整洁之道勘误
Python代码整洁之道错误勘误原创 2022-05-04 23:45:00 · 905 阅读 · 0 评论 -
Python手写一个Base64编解码工具
python手写base64原创 2021-12-04 21:09:53 · 1274 阅读 · 0 评论 -
python开发中的常用命令
这是一些比较常用的命令, 大家可以复制后用typora做成pdf格式,方便快速查询后续不定期更新pip配置爬虫配置代理 特殊字符需要用urlencode编码可以使用这个模块进行编码from urllib.parse import quotehttp http://username:password@proxy.huawei.com:8080/https https://username:password@proxy.huawei.com:8080/documentation locatio.原创 2021-12-01 18:40:55 · 214 阅读 · 0 评论 -
Python解析xml
Python xml解析xml是什么?extensible markup language 扩展标记语言xml被设计用来传输和存储数据,是一套定义语义标记的规则,用来传输和存储数据xml解析的方法?DOM和SAX解析,这两种接口处理XML文件的方式不同,当然是用场合也不同python有三种方法解析XML,SAX,DOM以及ElementTree1.SAX(simple API for...原创 2018-09-10 12:37:20 · 328 阅读 · 0 评论 -
一次因修改Python编码规范而引起的“血案“
简单来说就是因为如下代码, 导致了ZipOutputPath的一个函数异常, 导致zip包不能正确下载有如下报错:UnboundLocalError: local variable 'val' referenced before assignment排查发现,错误发生点代码简化如下#!usr/bin/python# -*- coding:utf8 -*-import timedef print_time(): # import time time = time.ti.原创 2021-11-23 18:03:04 · 1238 阅读 · 0 评论 -
闭包详解(Python为例)
不能简单讲,这就要看一些底层的东西(堆栈结构等等,估计还和编译原理有关),我觉得重点在于延迟绑定怎么知道绑定的外层函数的局部变量python的闭包是延迟绑定什么是闭包?出现函数嵌套, 即外层函数嵌套内层函数, 这就意味着c没有闭包,因为函数不能嵌套定义, 我猜的, 这块打个flag内部函数引用外部函数的局部变量 一般我们知道,在栈中的局部变量在函数后退出后就销毁了, 那有什么办法可以不立即这么做?外部函数返回值必须是内嵌函数talk is cheap#!/usr/bin/python原创 2021-10-27 18:26:13 · 208 阅读 · 0 评论 -
❤️Python是一个业余的编程语言吗?❤️
????前言作为一个在python国内还很小众的时候就开始玩Python了(我知道有大佬是2013年就玩的很溜了,麻烦让我装个逼)不过Python正渐渐退出了我的主力语言, golang,c,rust可能是未来我的场地。也就是说,我并不是一个纯粹的python开发者语言有两种: 没人用的,被人骂的。????????Python设计的目的代码容易阅读和理解,语法简洁适用于时间比较短的开发,日常任务open source这就决定了它的生态,它的用户群体,可以说,它具有普胜法的奥原创 2021-10-14 09:40:35 · 580 阅读 · 0 评论 -
python爬取有道翻译(最新)
打开有道翻译的页面,我们先打开谷歌浏览器的开发者工具,切换到 network 抓包工具,然后在翻译中输入要翻译的内容,寻找翻译的url地址我们发现,此请求为 POST 请求,既然是 POST 请求,那么我们肯定要找到对应的 请求体 参数,不变的参数from: AUTOto: AUTOsmartresult: dictclient: fanyideskwebbv: b286f0a34340b928819a6f64492585e8doctype: jsonversion: 2.1.原创 2020-09-13 18:04:26 · 1537 阅读 · 2 评论 -
python爬取创业文章标题图片
爬虫获取36kr首页的新闻列表的文章内容网址:36kr获取文章字段:标题标题对应的url地址标题对应的图片最后保存: 把所有文本保存为json文件 把图片保存到本地的目录中import osimport reimport jsonimport requestsfrom jsonpath import jsonpathclass KrSpider(object): def __init__(self): self.url = 'h.原创 2020-09-12 09:51:43 · 134 阅读 · 0 评论 -
python爬取段子
糗事百科段子爬取https://www.qiushibaike.com/text/page/1/selenium和requests和lxml两种方法#!usr/bin/python# -*- coding:utf8 -*-import timefrom selenium import webdriverclass QiuBaiSpider(object): def __init__(self): self.url = 'https://www.qiushib.原创 2020-09-12 09:50:39 · 225 阅读 · 0 评论 -
python爬取百度贴吧
获取贴吧的每个标题以及图片确定url地址 url: https://tieba.baidu.com/f?kw={}确定抓取的数据的位置 抓取数据的时候 先对数据进行分组 遍历提取数据分组拿到li列表 //li[@class=’’]从列表页中进入到详情页中 对详情页的url地址发送请求提取图片 //img[@class=‘BDE_Image’]import osimport timeimport requestsfrom lxml import etreec.原创 2020-09-12 09:47:43 · 961 阅读 · 0 评论 -
python爬取军事新闻网站
使用了requests和BeautifulSoup库文档地址: requestsbs4#!usr/bin/python# -*- coding:utf8 -*-"""https://mil.news.sina.com.cn/roll/index.d.html获取”中国军情“N页的爬虫,写入json文件中, 每一页的数据写入一个json文件"""import osimport jsonimport requestsfrom bs4 import BeautifulSoupc.原创 2020-09-09 20:10:09 · 1207 阅读 · 0 评论 -
Python concurrent.futures模块
Python实现多线程/多进程,大家常常会用到标准库中的threading和multiprocessing模块。但从Python3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor和ProcessPoolExecutor两个类,实现了对threading和multiprocessing的进一步抽象,使得开发者只需编写少量代码即可让程序实现并行计算3.8文档下面可以看到Executor是抽象基类Executor (Abstract.原创 2020-07-02 20:45:50 · 324 阅读 · 0 评论 -
Python asyncio
asyncio正如官方文档所说, asyncio-Asynchronous I/O, event loop, coroutines and tasks. This module provides infrastructure for writing single-threaded concurrent code using coroutines, multiplexing I/O.是一个异步高并发的模块 async/await是python3.5用于定义协程的关键字,async定义一个协程,.原创 2020-07-02 12:04:35 · 130 阅读 · 0 评论 -
Python协程实现生产者和消费者模型
我们知道python最早的协程是基于yield生成器来实现, python3.5之后出现了asyncio和async/await关键字,有了更方便的协程方式.yield协程需要知道我们需要预先激活这个协程, send方法的参数成了当前yield表达式的结果, send方法返回生成器下次yield的值.#!usr/bin/python# -*- coding:utf8 -*-"""python协程实现生产者和消费者模型generator.send(value): Resumes .原创 2020-07-02 11:08:45 · 1388 阅读 · 0 评论 -
python浅拷贝和深拷贝
python中==和is的区别 == 比较变量所指向的值是否相等 a==b相当于a.eq(b) 比如列表会重载__eq__,会去遍历列表中的元素,比较它们的顺序和值是否相等 is: 是否是同一个对象,是否指向同一个内存地址浅拷贝和深拷贝: 浅拷贝: 只有三种操作 切片操作、工厂函数、copy.copy 只拷贝原对象内第一层对象的引用 深拷贝: 只有一种形式,copy.deepcopy 深拷贝拷贝了对象的所有元素,包括多层嵌套的元素 对于元组,使用tuple()或者切片操作符’:'不原创 2020-06-28 18:58:56 · 204 阅读 · 0 评论 -
python实现汉诺塔
有三个立柱A、B、C。A柱上穿有大小不等的圆盘N个,较大的圆盘在下,较小的圆盘在上。要求把A柱上的圆盘全部移到C柱上,保持大盘在下、小盘在上的规律(可借助B柱)。每次移动只能把一个柱子最上面的圆盘移到另一个柱子的最上面。请输出移动过程。 对于"将moveSum个圆盘从from柱移动到to柱(借助by柱)"这个问题,我们可以通过以下三步实现:将from柱最上面的moveSum-1个圆盘移动到by柱(借助to柱)将from柱上剩下的那1个圆盘直接移动到to柱将by柱上的moveSum-1个圆盘移.原创 2020-06-22 21:57:22 · 2779 阅读 · 0 评论 -
python实现LRU缓存淘汰
LRU Least Recent used 最近最少使用算法,主要用于缓存淘汰.主要目的就是把最近最少使用的数据移除内存,以加载其他数据原理: 有新数据(意味着数据之前没有被缓存过)时,加入到列表头缓存达到最大容量时, 需要淘汰数据多出来的数据,此时淘汰列表尾部的数据当缓存中有数据被命中, 则将数据移动到列表头部(相当于新加入缓存) 从前面的文章中我们可以知道,缓存简化下来就两个功能,一个是往里装数据(缓存数据),一个是往外吐数据(命中缓存),所以我们的缓存对外只需要put和get两.原创 2020-06-22 21:27:34 · 557 阅读 · 0 评论 -
python字典的底层原理
在Python 3.5(含)以前,字典是不能保证顺序的,键值对A先插入字典,键值对B后插入字典,但是当你打印字典的Keys列表时,你会发现B可能在A的前面。但是从Python 3.6开始,字典是变成有顺序的了。你先插入键值对A,后插入键值对B,那么当你打印Keys列表的时候,你就会发现B在A的后面。不仅如此,从Python 3.6开始,下面的三种遍历操作,效率要高于Python 3.5之前:for key in 字典for value in 字典.values()for key, val.转载 2020-06-22 21:03:20 · 336 阅读 · 0 评论 -
python内存管理
内存管理机制:1. 小整数对象池 范围[-5, 256]2. 大整数池 默认创建出来,池内为空的,创建一个就会往池中存储一个3. 字符串intern机制(字符串驻留机制) 每个单词(字符串), 不夹杂空格或者其他符号,默认开启intern机制, 共享内存, 靠引用计数决定是否销毁python中的内存管理机制:garbage collection:1. 引用计数为主python里外物皆对象, 它们的核心就是一个结构体: PyObjecttypedef stuct_object{int.原创 2020-06-20 13:27:49 · 129 阅读 · 0 评论 -
python元类实现orm
这篇文章将的很好, 推荐一下详解orm#!usr/bin/python# -*- coding:utf8 -*-# 实现ORM# 定义Field类, 它负责保存数据库表的字段名和字段类型class Field(object): def __init__(self, name, column_type): self.name = name self.column_type = column_type def __str__(self): .转载 2020-06-18 19:16:31 · 206 阅读 · 0 评论 -
python中的type
使用type()函数时,如果只传入一个参数object,那么将返回该object的类型;如果分别传入name,bases,dict这三个参数,那么type()函数将会创建一个对象;使用class定义对象的时候,Python解释器调用type()函数来动态创建对象。use_type.py#!usr/bin/python# -*- coding:utf8 -*-# class type(name, bases, dict)x = type('X', (object, ), dict(a=1,.原创 2020-06-15 20:44:38 · 783 阅读 · 0 评论 -
python中的迭代器和生成器
迭代器协议:把一个类作为一个迭代器使用需要在类中实现两个方法__iter__()与__next__()iter() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 next()方法并通过 StopIteration 异常标识迭代的完成。my_iterator.py#!usr/bin/python# -*- coding:utf8 -*-class MyNumbers(object): def __iter__(self): self.a = 1 .原创 2020-06-13 19:38:57 · 241 阅读 · 0 评论 -
python实现单例模式
使用__new__来实现#!usr/bin/python# -*- coding:utf8 -*-class Singleton(object): def __init__(self, name): self.name = name def __new__(cls, *args, **kwargs): if not hasattr(cls, '_instance'): cls._instance = super(Si..原创 2020-06-13 18:59:47 · 243 阅读 · 0 评论 -
python socket实现客户端和服务端
利用python socket和threading实现简单的客户端和服务端tcp_server.py#!usr/bin/python# -*- coding:utf8 -*-import socketimport threading# 处理客户端的请求操作def handle_client_request(service_client_socket, ip_port): while True: recv_data = service_client_socket..原创 2020-06-13 18:52:12 · 1395 阅读 · 0 评论 -
Python中的is和==区别
预先知识Python的字典和集合底层都是哈希表实现的,哈希表存在两个问题: 1. 哈希冲突的解决方法和根据装载因子扩容问题在Java中HashMap的实现方式是扩容容量增加为原来两倍,解决冲突的方法是链地址法, 当某个箱子的链表长度>8,转化为红黑树, <6,从红黑树转换为链表,以便提高插入删除查询的性能如果两个对象相同,hashcode一定相同。但是hashcode相同的两...原创 2019-11-01 16:49:44 · 185 阅读 · 0 评论 -
Python中的实例方法、静态方法和类方法
python类语法中有三种方法:实例方法/静态方法/类方法 python中实现静态方法和类方法都是依赖于python的修饰器来实现的实例方法需要将类实例化后调用,如果使用类直接调用实例方法,需要显示地将实例作为参数传入 ClassName.func(instances) 类方法传入的第一个参数为cls,是类本身,类方法可以通过类直接调用,或通过实例直接调用 静态方法是指类中无需实例参与即...原创 2019-06-03 23:06:09 · 326 阅读 · 0 评论 -
python装饰器
python中的装饰器接受一个功能,添加一些功能并返回,这也称为元编程,作为程序的一部分,尝试在编译时修改程序的另一部分。学习了鼻祖lisp元编程的思想示例代码:#!usr/bin/python# -*- coding:utf8 -*-"""装饰器接受一个功能,添加一些功能并返回"""# 用参数装饰函数def smart_divide(func): # 装饰器中嵌套...原创 2019-06-04 23:29:36 · 124 阅读 · 0 评论 -
Django学习笔记5
登录页面我们首先来实现登录页面的功能,将使用Django提供的默认登录视图函数,因此ULR模式会稍有些不同在目录learning_log/users/中,新建一个名为users.py文件修改urls.py"""为应用程序users定义URL模式"""from django.conf.urls import urlfrom django.contrib.auth.views import lo...原创 2018-04-03 17:56:34 · 521 阅读 · 0 评论 -
Pygame从0实战7
1.Pygame从0实战7Pygame中简单图形的绘制绘制矩形 rect(Surface, color, Rect, width=0) -> Surface # width是指定矩形边框的大小pygame.draw.rect() Draw a rectangular shape on the Surface. The given Rect is the area of the reatan...原创 2018-03-08 20:17:43 · 451 阅读 · 0 评论 -
测试代码的执行时间魔法方法%time和%timeit
对于规模更大、运行时间更长的数据分析应用程序,你可能会希望测试一下各个部分或函数调用或语句的执行时间。你可能会希望了解某个复杂计算过程中到底是哪些函数占用的时间最多。幸运的是,在开发和测试代码的过程中,IPython能够让你轻松得到这些信息。使用内置的time模块及其time.clock和time.time函数手工测试代码执行时间是一件令人烦闷的事情,因为你必须编写许多一模一样的了无生趣的公式化代...转载 2018-10-20 14:08:51 · 1800 阅读 · 0 评论 -
Python深浅拷贝
python——赋值与深浅拷贝 初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~预备知识一——python的变量及其存储 在详细的了解python中赋值、copy和deepcopy之前,我们还是要花一点时间来了解一下python内存中变量的存储情况。 在高级语言中,变量是对内存及其地址的抽象。对于...转载 2018-09-20 10:27:54 · 301 阅读 · 0 评论 -
python实现smtp协议发送邮件
协议简介: SMTP和POP3/IMAP协议的一些介绍1.SMTP协议 (1) SMTP协议(simple mail transfer protocol) 简单邮件传输协议 (2) 定义了邮件客户端与SMTP服务器之间、两台SMTP服务器之间的通信规则 (3) 分为标准SMTP协议和扩展SMTP协议。扩展SMTP协议在标准SMTP协议上增加了邮件 ...原创 2018-09-10 18:37:48 · 6784 阅读 · 2 评论 -
Pygame从0实战2
1.Pygame从0实战2下面要讲讲Pygame的事件事件是什么? Pygame会接受用户的各种操作(比如按键盘、移动鼠标)等产生事件。事件随时可能发生,而且量可能会很大,Pygame的做法是把一系列的事件存放在一个队列里逐个处理。事件检索 pygame.event.get()来处理所有的事件。如果我们使用pygame.event.wait(),Pygame就会等到发生一个事件才继续下...原创 2018-03-04 18:02:10 · 376 阅读 · 0 评论 -
Pygame从0实战10(泡泡小游戏添加音效)
1.Pygame从0实战10(泡泡小游戏添加音效)这节我们将如何在Pygame游戏中添加音效并且在上节未完成的泡泡游戏中添加音效 下面是资源链接 点击打开链接 密码:hfjz播放声音和音效建议将将.ogg格式作为背景音乐,.wav作为音效播放背景音乐:-pygame.mixer.music对象pygame.mixer.music: pygame module for controlling str...原创 2018-03-11 13:35:41 · 2584 阅读 · 1 评论 -
Python多线程基础
1.线程概念线程的定义: 线程是进程中的一个实体,作为系统调度和分派的基本单元。Linux下的线程看作轻量级进程。 线程的性质: 1.线程是进程内的一个相对独立的可执行的单元。若把进程称为任务的话,那么线程则是应用中的一个子任务的执行。 2.由于线程是被调度的基本单元,而进程不是调度单元。所以,每个进程在创建时,至少需要同时为该进程创建一个线程。即线程中至少要有一个或翻译 2018-03-03 12:50:22 · 159 阅读 · 0 评论 -
Pygame从0实战9(泡泡小游戏碰撞检测)
1.Pygame从0实战8(泡泡小游戏碰撞检测)1.自己实现碰撞检测思路: Rect()对象center属性就是小球的圆心,那么两个Rect()对象(两个小球)center属性的距离和一个Rect()对象的width属性的距离大小比较,如果前者大,则说明两个小球没有碰撞,反之则碰撞了有两个点A(X1, Y1),B(X2, Y2),则两点距离AB = √((x1-x2)^2 + (y1-y2)^2)...原创 2018-03-09 20:36:12 · 1389 阅读 · 0 评论 -
Pygame从0实战8(泡泡小游戏)
1.Pygame从0实战8之泡泡小游戏 用面向对象的思想做一个泡泡拯救世界的小游戏下面是所要用到的图片和源代码链接:点击打开链接 密码:l68hsprite模块、Sprite类 在pygame.sprite模块中包含了一个名为Sprite类,它是pygame自带的一个精灵。但这个类的功能比较少,因此我们新建一个类对其继承,在Sprite类的基础上丰富,以方便我们的使用.官方: pyga...原创 2018-03-09 13:38:15 · 809 阅读 · 0 评论 -
Python多线程与高并发
主要讲解了关于Python多线程的一些例子和高并发的一些应用场景# -*- coding: utf-8 -*-# @Author: Clarence# @Date: 2018-02-28 20:39:31# @Last Modified by: Clarence# @Last Modified time: 2018-02-28 23:29:54"""涉及知识点互斥锁 线程在...原创 2018-02-28 23:42:38 · 15079 阅读 · 0 评论 -
Pygame从0实战6
1.Pygame从0实战6下面主要介绍convert()方法bg = pygame.image.load("background.jpg").convert()pygame.Surface convert(): change the pixel format of an image (像素格式的转换) convert(Surface) -> Surface convert() ->...原创 2018-03-08 20:11:00 · 351 阅读 · 0 评论