Python精通之路
Python 程序简洁、易读:
高级数据类型允许在单一语句中表述复杂操作;
使用缩进,而不是括号实现代码块分组;
无需预声明变量或参数。
会振刀的程序员
唯手熟尔
展开
-
【Python】Jupyter的基础入门
因为最近的业务问题,需要对大批量的数据进行数据处理。Pycharm在数据处理中比较繁琐,会面临大批量的运行,调试,代码修改。将为了提升数据处理效率,我们采用更专业saas平台:Jupyter Notebook,我更贴切的叫它草稿本。可能很多同学会使用anaconda,但我个人不建议这么做,因为anaconda很难解耦,没办法真正掌握jupyter轻量级的特点。今天就jupyter的轻量灵活分享一下我的经验。jupyter是个非常好用的草稿本,数据处理的绝佳帮手。有问题欢迎留言指正!原创 2023-03-14 11:15:09 · 7365 阅读 · 0 评论 -
【Mysql】单表多功能查询的封装
因为最近业务问题,面临大批量的查询、排序、分页、字段筛选,所以用原生sql写了这么一个封装。解释:参数由列表输入:[‘name@like:小明’,year@>:16] '@‘和’:'为固定格式,后台代码用其进行通配符。包含!解释:参数由列表输入:['date@desc,‘name@asc’] @为固定格式解释:参数由列表输入:[‘remark’,‘name’] 数据为不包含的字段名‘page’:int解释:参数为页数,类型为整型解释:参数为每页的大小,类型为整型。原创 2023-05-13 17:18:20 · 968 阅读 · 0 评论 -
【Python】什么才是好代码
静态代码分析工具能够提炼出丰富的代码静态属性信息,这使得程序员可以对代码的复杂性、可修改性和可读性有进一步的了解。原创 2023-05-13 17:18:22 · 1078 阅读 · 0 评论 -
【Python】集合的使用场景
1、去除列表中重复的元素2、求交集、并集、差集3、已知a、b列表。问:根据b列表中不包含a列表的元素。原创 2023-05-13 17:17:48 · 986 阅读 · 0 评论 -
【Python】元组之不可修改性原理详解
初学者经常会走入一个误区,原创 2022-03-31 15:36:13 · 4659 阅读 · 0 评论 -
【Python】内存、引用、驻留
1、变量皆是标签如图所示,ab皆是便利贴,皆是标注。为什么这么说呢,代码复现一下。如图可知,当向b中添加元素4时,a也产生了变化。并且ab前后的id值是没有产生任何变化的。面对这种现象,我们也把a或b叫做别名,他们都表示同一块内存地址。2、引用分配给对象,而不是把对象分配给引用为什么这么说呢?打个比方,a、b就像是人员分配,我们总是会把人员分配到地方,那么这个地方一定是一个既成事实。在python代码中同样如此,复现一下:可以看出,赋值语句的右边先执行,先创建再赋值。那么此时是先实例化对象原创 2022-03-29 17:11:53 · 681 阅读 · 3 评论 -
Python类的实现原理
所有类的基类(父类)是object。在创建类的时候,可通过dir(classname)查看继承的方法。在Python中之所以没有其他语言中的类那么麻烦,绝对要归功于object函数。因为是python3默认每个类在创建时都会继承object,所以我们利用python2来看一下以上student就是一个经典类,下面这个继承了object的类我们把它叫做新式类。其中过多的函数我们可以不去探究,如果有兴趣可以查看python源码解析。原创 2022-02-09 13:58:27 · 1122 阅读 · 1 评论 -
Python爬虫,快速抓取(消息队列+多进程池+协程)
Python多进程+协程+消息队列实现企业级效率爬虫。安居客为例200页爬虫,70秒->6秒。就问你快不快.思路1、利用多进程实现多核CPU同时工作2、利用协程解决请求IO阻塞3、利用消息队列实现结果输出代码import requestsimport asyncioimport timefrom multiprocessing import Process,Queuenow=lambda :time.time()tim1=now()async def craw(i,re原创 2023-05-13 17:18:48 · 1177 阅读 · 0 评论 -
Python静态方法
Python静态方法什么是静态方法?静态方法是干什么的?在Python里面静态方法和我们平时写的函数def是一样的。唯一不同之处就是它可以存在于类中,不同实例化类也可以调用。话不多说,通过例题看一下。例题思路:在类中编写静态方法和类的普通方法class Static: @staticmethod def test_static(): print('I am staticmethod') def test_def(self):原创 2022-02-16 13:32:24 · 5018 阅读 · 0 评论 -
python将目录下的所有文件夹以及文件写进excle表格中
python将目录下的所有文件夹以及文件写进excle表格中人生苦短,还是用python好。现在将.idea文件夹目录的所有文件都写进excle中。直接上图上代码!原创 2023-05-13 17:17:34 · 1072 阅读 · 0 评论 -
Python生产者-消费者队列、优先级队列
生产者消费者队列通俗来讲:1、生产任务 2、解决任务。生产者消费者队列deque比queue.Queue和进程队列效率更高,他是一个两端都可以操作的序列。更加灵活好用。可用于多线程,多进程。优先级队列heapq优先级队列比queue的PriorityQueue的效率更高,如数据量过大,使用heapq。因为PriorityQueue是线性的,随着量的大量增加会很慢。总结:在任务中,一般就用deque和heapq啦。deque的相关方法和list很相似,heapq则是heappush、heappo原创 2023-05-15 11:33:41 · 1226 阅读 · 0 评论 -
【Python】变量作用域规则
前言Python变量作用域:函数执行规则函数执行规则输出6,没有问题。再看一个例子为什么会出现这种情况呢。answer:函数执行时会先判断本地作用域的变量,此处因为b=2,所以函数把b当作了局部变量,所以执行到print的时候,出现了变量未定义的情况。...原创 2023-05-13 17:17:43 · 568 阅读 · 0 评论 -
Python什么是协程、线程?看这篇足够
Python协程看了很多文章说线程、协程,讲的真是五花八门,新人听不懂类型,就算听懂了,也写不会类型。看得我脑壳疼。相信线程的话,是非常清晰明了的,究竟什么是协程呢?还是那句话,不管他是个什么玩意儿, 首先你知道怎么用,知道怎么用了之后,再去深究他是个什么玩意儿的时候就非常的清晰明了。看懂线程、协程必须具备的思想不要把线程、协程想的有多么困难,多么复杂,其实就是异步的使用工具而已。看待任何问题,一定要站在比问题本身高一个层次再去理解问题。不同点1、上下文的保存机制不同:线程:上下文保存在任务控原创 2023-05-15 11:34:39 · 1091 阅读 · 0 评论 -
【Python】调用C语言
python中调用.c文件生成的so、dll文件首先把文件.c转换成.dll或者.so。Windows下Demo亲测一波,话不多说,上图上代码。C代码# include<stdio.h>int foo(){ int i,k,m; for(i=0;i<1000;i++){ for(k=0;k<1000;k++){ for(m=0;m<1000;m++) { } }}...原创 2021-11-26 18:28:56 · 8726 阅读 · 4 评论 -
Python递归树结构,回溯法深度优先、广度优先详解,代码实现
Python实现,递归算法其实递归说白了就是循环本身函数,只不过下次循环的输入值是上次循环的结果值。关于递归算法,我经常把它用在搜索、计算中。我们来看一个简单的例子:计算Demo'要实现1,3,7,15,31''有如下数列,请问第7位是多少 --> 127 '#普通写法def simple(time): '''如上可以看出规则为 1 * 2 + 1 ''' '''此时如果硬写代码会比较繁琐,''' time -= 1 for i in range(time):原创 2023-05-13 17:18:05 · 2007 阅读 · 2 评论 -
python函数不能传可变参数
python函数不能传可变参数如图所示,第二次查看参数接口的时候,arg参数的值并没有释放,而是把上一次的结果返给了接口参数def demo(arg=[],parm=3): for i in range(parm): arg.append(i) return Noneprint(demo.__defaults__)demo(parm=3)print('-----')print(demo.__defaults__)...原创 2023-05-14 17:15:44 · 642 阅读 · 0 评论 -
【Python】栈堆内存之引用的秘密
栈堆内存之引用的秘密前提纲要:1、栈中存储基础数据类型2、堆中存储数据结构(列表、集合、字典、元组)3、任何一个基础数据类型被赋值的时,若此值已经存在,则直接引用其地址栈内存究竟储存的是什么?以列表和字典举例...原创 2023-05-13 17:18:38 · 1184 阅读 · 0 评论 -
Python高级函数之装饰器,大道至简
Python中装饰器的使用为什么要使用装饰器呢,不使用装饰器不行吗?当然可以不使用装饰器。但是学会使用装饰器,你的代码将会挤入上流社会,变得非常漂亮、简洁、高大上。登录验证Demo下面这个例子就是使用装饰器实现登录验证功能讲讲实现思路吧:1、通过@装饰器将main函数添加到login中且命名为fun。2、实现的时候看似调用main函数,实则是调用login函数。3、通过account、pwd验证后再调用fun函数def login(fun): def isLogin(account原创 2023-05-15 11:34:41 · 498 阅读 · 1 评论 -
Python实现sqlite3增删改查的封装
Python基于sqlite3二次封装,可直接调用接口特性:搭建通用增删查改模块,减少代码量。让代码更加清晰、可读即便进行了封装,也丝毫不影响其灵活性sqlite3我也就不多介绍了,直接上代码。附上相关使用方法和测试用例!import sqlite3'''写一个类打包成库,通用于储存信息的sqlite''''''函数返回值...原创 2022-01-24 15:13:39 · 3445 阅读 · 2 评论 -
超好用的SQLAlchemy
SQLAlchemy是一个python语言实现的的针对关系型数据库的orm库。可用于连接大多数常见的数据库,比如Postgresql、MySQL、SQLite、Oracle等。原创 2023-05-13 17:18:50 · 1864 阅读 · 0 评论 -
【Python】元类与父类的区别
元类type是一个py的标准元类,它做了一个类的建立所必须做的事情,也就是建立了类的基础。答当没有元类声明的情况下,默认为type元类进行类的创建。反之,利用声明的元类进行创建。2、元类主要用于重写type元类本身自带的内置方法。父类他做了在类建立的基础上,给其添加功能的事情。事实上,我认为元类是类的高度抽象的结果。在遇见的示例里面,我把类的抽象分为两种。1、父类主要用于抽象普通类方法。py在类建立的时候是如何运作的?...原创 2022-07-17 13:42:41 · 755 阅读 · 1 评论 -
【PythonWeb】两种方法、搭建自己的pypi服务器。内网的你,必须要会
pypi服务器搭建预备whl文件1.0 http.server启动服务使用教程2.0 pypiserver安装、启动服务使用教程预备whl文件下载whl文件到目录,两种方式pip download fastapi -d packagepip download -r requirements.txt -d package当前whl文件中包含django、fastapi、requests,以此为例1.0 http.server启动服务http.server是py自带模块,可用过python -原创 2023-05-14 17:16:22 · 859 阅读 · 5 评论 -
【Python】深究for循环迭代
深究for循环拓展概念详解可迭代对象被迭代的过程剖析iter、next的分别两种参数拓展概念在py中,为方便理解,我们会把可迭代对象也比作容器,容器算是可迭代对象的一个大类,绝大部分容器都可被迭代详解可迭代对象被迭代的过程官方给出的解释如下:在幕后,for 语句会在容器对象上调用 iter()。 该函数返回一个定义了 next() 方法的迭代器对象,此方法将逐一访问容器中的元素。 当元素用尽时,next() 将引发 StopIteration 异常来通知终止 for 循环。 你可以使用 next原创 2022-05-23 16:24:26 · 723 阅读 · 9 评论 -
【Python】深究模块导入:from .. import ..\ import ..
模块导入:from .. import ..\ import ..from .. import ..Python中模块导入方式分为两种,next part详解!!!from … import …from … import …具备三种形式:1、从py模块中导入变量from [module] import [var]from [module] import *from [module] import [var] as [var]......原创 2022-05-21 16:53:16 · 12820 阅读 · 8 评论 -
【Python】生成器表达式的运用
生成器表达式的运用前言列表推导式生成器表达式前言说起生成器表达式,不得不提到列表推导式。列表推导式是我们Python的一个语法糖,目的在于代码优雅性。生成器表达式在形式上的区别是没有列表推导式的中括号。列表推导式常用于不同业务情况下的列表生成astmt=[i for i in range(10)]print(stmt)生成器表达式#生成器表达式print(i for i in range(10))如图所示,返回一个生成器对象。故其外部通常会跟一些方法,如sum,max等.。su原创 2023-05-14 17:15:30 · 225 阅读 · 0 评论 -
【Python】Python解释器
Python解释器2.1调用解释器2.1.1启动解释器的四种方式2.1.2交互模式2.2解释器的运行环境2.2.1源文件的字符编码解释器可以以交互式快速的进行代码的执行和调用2.1调用解释器2.1.1启动解释器的四种方式1、cmd、win+r打开命令行,启用python.exe进入交互模式。退出交互模式的三种方式:(1)quit() (2)exit()(3)ctrl+Z2、进入命令行,执行Python.exe -c 'command',command含义:Python源代码以上原创 2022-05-15 21:18:14 · 11563 阅读 · 9 评论