![](https://img-blog.csdnimg.cn/20210804112356438.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
python
文章平均质量分 56
python
季布,
每一个你不满意的现在,都有一个你没有努力的曾经。
展开
-
Python Map方法
把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。map是python内置函数,会根据提供的函数对指定的序列做映射。原创 2023-06-25 10:52:03 · 380 阅读 · 0 评论 -
python 读取excel内容写入到world中
python 读取excel内容写入到world中。原创 2022-11-17 18:33:15 · 2817 阅读 · 1 评论 -
Python 继承
默认用的是 Python 3,也就是说:本文所定义的类都是新式类。但是如果要实例化子类的对象,则只能传入父类的初始化函数对应的参数,否则会出错。所以,你如果用的是 Python 2 的话,记得将本文的 super() 替换为 suepr(Class, self)。1.当子类定义了自己的init方法时,务必要先显示调用父类的init方法,否则会报错。2.当子类中的方法和父类同名的时候,则子类中的该方法会自动覆盖父类中的该方法。在单继承中 super 就像大家所想的那样,主要是用来调用父类的方法的。转载 2022-09-20 14:02:02 · 116 阅读 · 0 评论 -
python NLP英式英语和美式英语的转换
NLP 英式美式单词转换原创 2022-06-14 14:13:47 · 602 阅读 · 0 评论 -
python 面向对象理解
面向过程开发,这种方式有个弊端就是没法复用,而且这种方式开发比较lowif __name__ == '__main__': num01 = int(input("请输入第一个整数:")) action = input("请选择要执行的操作【加[+],减[-],乘[*],除[/],余[%]】:") num02 = int(input("请输入第二个整数:")) if action == "+": print(" %d + %d = %d " % (num01,原创 2022-04-26 21:12:13 · 387 阅读 · 0 评论 -
Python 内存管理机制
一、变量与对象关系图如下:1.变量,通过变量指针引用对象变量指针指向具体对象的内存空间,取对象的值。2. 对象,类型已知,每个对象都包含一个头部信息(头部信息:类型标识符和引用计数器)注意变量名没有类型,类型属于对象(因为变量引用对象,所以类型随对象),变量引用什么类型的对象,变量就是什么类型的。var_1 = 'abc'var_2=aprint(id(var_1 ))print(id(var_2))20450733783522045073378352PS:id()是py转载 2021-12-23 16:23:12 · 155 阅读 · 0 评论 -
Python 赋值、浅拷贝和深拷贝
先明确几点不可变类型:该数据类型对象所指定内存中的值不可以被改变。(1)、在改变某个对象的值时,由于其内存中的值不可以被改变,所以,会把原来的值复制一份再进行改变,这样就会计算机会开辟一段新的内存空间来存储新的值。可变类型:该数据类型的对象所指定的地址上面的值可以被改变。(1)、变量被改变后,其所指向的内存地址上面的值,直接被改变,没有发生复制行为,也没有发生开辟新的内存地址行为,不会重新开辟空间。变量:是一个系统表的元素,拥有指向对象的连接空间对象:被分配的一块内存,存储其所代表的值引用:原创 2021-12-16 12:11:28 · 1069 阅读 · 0 评论 -
git pull和git fetch区别
git pull和git fetch是使用git获取最新版本代码的两条常用指令git pull从远程拉取最新代码到本地并自动合并(merge) git pull origin master (git fetch+git merge)git fetch从远程获取最新版本到本地不会自动合并 merge但正常来说最好用git fetch+git merge的方式更新代码,这样在merge之前可以看清楚更新情况再决定是否合并git pull 在执行过程中会把很多问题细节都隐藏起来,多数情况下是原创 2021-12-09 15:07:17 · 220 阅读 · 0 评论 -
HTTP如何保证安全传输
目前大多数网站和app的接口都是采用http协议,但是http协议很容易就可以通过抓包工具监听到内容,甚至篡改内容,为了保证数据不被别人看到和修改,可以通过以下几个方面避免:重要数据加密 比如用户名和密码,我们需要加密,这样即使被抓包监听,他们也不知道原始数据是什么。简单的md5是可以暴力破解的,所以加密方式越复杂就越安全,可以根据需要自由组合 常见的是 md5(不可逆),aes(可逆)非重要数据要签名 签名的目的是防止篡改,比如http://www.xxx.com/getnews?id=1,获转载 2021-12-09 14:24:43 · 2395 阅读 · 0 评论 -
僵尸进程 孤儿进程
僵尸进程僵尸进程如何产生的僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将称为僵尸进程(进程退出但是资源没有被释放)僵尸进程的危害僵尸进程处于停止状态,资源没有被完全释放(进程ID,进程的退出状态,进程运行的CPU时间等)可能会导致资源泄露的问题操作系统所创建的最大进程数量是有限的(进程号被大量占用),导致新的进程无法被创建如何查找出僵尸进程打开终端输入以下命令ps aux | grep Z会列出进程表中所有僵尸进程的详细内容如何避.原创 2021-12-09 17:23:57 · 502 阅读 · 0 评论 -
Python 生成器和迭代器详解
迭代器在python中列表(list)、元组(tuple)、字典(dict)、集合(set)这些数据容器都有一个共同的特性,它们都支持使用for循环遍历容器中存储的元素,都是可迭代的也成为迭代器。迭代时访问集合元素的一种非常强大的方式。迭代器可以记住遍历位置,不会对例如列表这样的数据容器一次性全部生成,而是等到用的时候才会去生成。我们也可以创建一个可迭代的对象:只要此对象含有__iter__方法,那么它就是一个可迭代的对象如果要自定义实现一个迭代器,则类中必须实现以下两个方法:__next(sel原创 2021-12-14 11:34:04 · 2634 阅读 · 1 评论 -
python 重载运算符
在python中每种数据类型都是python的一个类,例如列表是list类,字典是dict类等,这些类的内部使用了一个叫做重载运算符的技术来实现不同运算符所对应的操作重载运算符指的是在类中定义并实现一个与运算符对应的处理方法,这样当类对象在进行运算符操作时,系统就会自动调用相应的方法来处理实例class Test: def __init__(self, name, age): self.name = name self.age = age def原创 2021-12-13 11:35:07 · 1768 阅读 · 0 评论 -
Python __repr__()方法
在我们实例化对象时直接输出该对象,往往事项获取该对象的基本属性,但是默认情况下我们得到的信息时这个造型"类名+ object at +内存地址",看不出啥有用的信息示例class Test: pass#实例化对象test=Test()print(test)print(test.__repr__()) #.......结果<__main__.Test object at 0x0000029FEBE586D0><__main__.Test object at 0原创 2021-12-13 10:46:32 · 710 阅读 · 0 评论 -
理解对称加密和非对称加密
对称加密在对称加密算法中,加密和解密使用的是同一把钥匙,也就是使用相同的密钥对同一密码进行加密和解密加密过程如下:加密:原文+密钥 = 密文解密:密文-密钥 = 原文优点:算法简单,加密解密容易,效率高,执行快缺点:相对来说不是特别安全,只有一把钥匙,密文如果被拦截,且密钥也被劫持,那么信息很容易被破解非对称加密非对称加密使用的不同密钥进行加密和解密,非对称加密有两把钥匙,公钥(Public Key)和私钥(Private Key)。公钥和私钥是承兑存在的,如果对原文使用公钥加密,则只原创 2021-12-10 10:55:23 · 757 阅读 · 0 评论 -
Python with as上下文管理器
with as用法详解在任何一门编程语言中,文件的输入输出以及数据库的断开连接等,都是很常见的资源管理操作。但资源都是有限的,在写程序时,必须保证这些资源在使用过后得到释放,不然就容易造成资源泄露,轻者使得系统处理缓慢,严重时会使系统崩溃在文件操作时打开的文件最后一定要关闭,否则会使程序的运行造成意想不到的隐患。但是即使close()做好了关闭文件的操作,如果在打开文件或文件过程中抛出了异常,还是无法及时关闭文件为了更好的避免此类问题,不同的编程语言都引入了不同的机制。在python中,对应的解决方式转载 2021-12-08 11:03:46 · 203 阅读 · 0 评论 -
详解Python字典的底层原理——哈希表(Python面试必备)
详解Python字典的底层原理——哈希表(Python面试必备)Python面试经常会被问到:你能说一说Python字典的底层实现原理吗?这个问题可以从三个方面来回答:1.python字典及其特性字典是Python的一种可变、无序容器数据结构,它的元素以键值对的形式存在,键值唯一,它的特点搜索速度很快:数据量增加10000倍,搜索时间增加不到2倍;当数据量很大的时候,字典的搜索速度要比列表快成百上千倍1。2.哈希表Python字典的底层实现是哈希表。什么是哈希表,简单来说就是一张带索引和转载 2021-12-07 16:45:05 · 2164 阅读 · 0 评论 -
Python list列表常用方法及其底层实现
添加元素append()方法用于在列表的末尾追加元素list_test = ['2','a','b']#追加元素list_test.append(1)print(list_test)#整个元素被当作一个元素list_test.append(('e',))print(list_test)结果['2', 'a', 'b', 1]['2', 'a', 'b', 1, ('e',)]当给 append() 方法传递列表或者元组时,此方法会将它们视为一个整体,作为一个元素添加到列表中,原创 2021-12-07 15:23:49 · 1187 阅读 · 0 评论 -
python 找出两个Json文件的差异
需求:比较新旧两个json文件的差异,有三种情况新的可能会新增新的可能会减少未新增也未减少只是修改了其中的某一条数据导致数据发生变化基于上面的情况找出差异数据格式如下:[ { "ID": 1607, "Badge": 7116, "CompID": 6330, "ReportTo": 254, "Remark1": "D47", "Remark2": "D2243", "Remark3": 1702, "Remark4":原创 2021-12-06 16:43:30 · 1899 阅读 · 0 评论 -
python 内置函数filter()
简述filter()是python的内置函数,用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素的新列表。该函数接收两个参数,第一个为函数,第二个为序列(列表,元组,集合等都可以),序列的每个元素作为参数传递给函数进行判断,然后返回True或False,最终将返回True的元素放到新列表中注意:python2.7返回列表,python3.x返回的是迭代器对象语法filter(function,iterable)参数function–判断函数iterable–可迭代对象返回值返原创 2021-12-06 10:03:41 · 896 阅读 · 0 评论 -
python zip()函数详解
前言python 2.x版本的zip()函数会直接返回列表,python3.x版本会返回zip对象,但是不论哪个版本所包含的元素是一样的都是元组类型zip() 函数是python内置函数之一,可以将多个序列(列表,元组,字典,字符串以及range()区间构成的列表)压缩成一个zip对象,就是将这些序列中对应的位置元素重新组合生成一个个新的元组zip() 函数的语法格式为:zip(iterable, ...)其中 iterable,… 表示多个列表、元组、字典、集合、字符串,甚至还可以为 rang原创 2021-12-03 17:11:38 · 16857 阅读 · 1 评论 -
Python元组和列表的区别
元组和列表最大的区别是列表中元素可以随意修改,就好比用铅笔在纸上写的字,写错了擦了重写;而元组中的元素无法修改,除非给元组重新赋值,就好比圆珠笔写的字擦不掉除非换纸。可以理解为元组是一个只读版本的list列表list_1 = []print(list_1.__sizeof__())tuple_1 = ()print(tuple_1.__sizeof__())结果4024相比之下,虽然两者都是空的,但是元组却比列表少战16个字节,这是为什么?事实上由于列表是动态的,它需要存储指针来指向原创 2021-12-02 11:37:13 · 568 阅读 · 0 评论 -
Python 元组基本使用及其底层实现
Python创建元组1. 使用 ( ) 直接创建num = (7, 14, 21, 28, 35)abc = ( "Python", 19, [1,2], ('c',2.0) )在 Python 中,元组通常都是使用一对小括号将所有元素包围起来的,但小括号不是必须的,只要将各元素用逗号隔开,Python 就会将其视为元组,请看下面的例子:t_tuble = 'a','b'print(type(t_tuble))结果<class 'tuple'>需要注意的一点是,当创建的元原创 2021-12-01 17:00:15 · 1077 阅读 · 2 评论 -
python __call__ 详解
先看一个例子class Test(object): def __init__(self): pass#创建实例t = Test()t()结果TypeError: 'Test' object is not callable类中没有__call__()时,t只是类的实例,不是一个可调用对象,所以会报Test不是一个可调用的对象错误class Test(object): def __init__(self,name,age): self.nam原创 2021-11-30 18:21:18 · 376 阅读 · 0 评论 -
Python装饰器
1.闭包的介绍我们知道当函数调用玩,函数内定义的变量会销毁,但是有时候我们需要保存函数内部的这个变量,每次在这个变量的基础上完成一系列的操作。比如:每次在这个变量的基础上和其他数字进行求和计算,那应该怎么办?闭包的定义:在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,把这个使用了外部函数变量的内部函数成为闭包.构成闭包的条件在函数嵌套(函数里面再定义函数)的前提下内部函数使用了外部函数的变量(包括外部函数的参数)外部函数返回了内部函数外部函数返回了内部函数原创 2021-11-28 14:54:11 · 425 阅读 · 0 评论 -
Python GIL全局解释器锁
GIL,中文译为全局解释器锁通过以下两个示例比较以下有无线程的区别def coast_time(func): def fun(*args, **kwargs): t = time.perf_counter() result = func(*args, **kwargs) print(f'func {func.__name__} coast time:{time.perf_counter() - t:.8f} s') return r原创 2021-11-25 15:28:07 · 501 阅读 · 1 评论 -
Python 5个面向对象编程示例
打印对象的所有属性class Person(object): def __init__(self): self.eyes=2 self.name="zhangsan" self.age = 30p = Person()print(vars(p))结果{'eyes': 2, 'name': 'zhangsan', 'age': 30}在函数中将对象的实例作为参数传递class Vehicle: def __init__(se原创 2021-11-25 13:43:33 · 2884 阅读 · 0 评论 -
Python 函数传参详解
Python位置传参位置传参也称为必备参数,必须按照正确的顺序将参数传递到函数中,定义函数时的参数与实际传入的参数数量必须保持一致正常如下:def par(A,B): return A+Bprint(par(1,2))结果3少传参数:def par(A,B): return A+Bprint(par(1))结果TypeError: par() missing 1 required positional argument: 'B'缺少一个必要的 B 参数。多传原创 2021-11-24 12:08:29 · 5997 阅读 · 0 评论 -
Python type()动态创建类
type()函数属于python内置函数,一般常用的是查看某个变量属于什么类型。但其实type()函数还有一个更高级的用法,即创建一个类。语法格式如下:type(name,bases,dict)name 表示类的名称;bases 表示一个元组,其中存储的是该类的父类;(元组中只有一个元素时,最后的逗号不能省略。)dict 表示一个字典,用于表示类内定义的属性或者方法。示例:def person(self): print("Hello World")#使用type创建类C_py原创 2021-11-22 10:57:56 · 608 阅读 · 0 评论 -
python 理解@staticmethod静态方法
python中的@staticmethod方法总结一句话:不实例化类的情况下直接访问该方法静态方法不可以引用类中的属性或方法,其参数列表也不需要约定的默认参数self。静态方法就是类对外部函数的封装,有助于优化代码结构和提高程序的可读性。class Person: def __init__(self,name): self.name=name print('调用者') def _name(self): print(self.name)原创 2021-11-17 16:45:33 · 18385 阅读 · 5 评论 -
游标的简单使用及案例【笔记二】
import pymysqldef get_connection(): # 连接数据库 connect = pymysql.Connect( host='ip', port=3306, user='username', passwd='password', db='databasename', charset='utf8' ) # 获取游标(指定获取的数据格式,这里设定返回dic原创 2021-09-17 12:16:27 · 4846 阅读 · 7 评论 -
游标的简单使用【笔记一】
什么是游标?在执行一条查询语句的时候,往往会拿到很多返回结果,执行sql语句取出这些返回结果接口(起始点)就是游标。沿着这个游标一次取出一行记录。如果不使用游标功能,直接使用select查询,会一次性将结果集打印到屏幕上,你无法针对结果集做第二次编程。使用游标功能后,我们可以将得到的结果先保存起来,然后可以随意进行自己的编程利用python连接数据库,使用游标功能1)使用python连接数据库时会经常使用游标。当我们使用python连接mysql的时候,python就相当于是mysql服务器的一个客户原创 2021-09-15 13:24:13 · 315 阅读 · 4 评论 -
python 生产者消费者模式
生产者消费者模式概述在并发编程中使用生产者和消费者模式能够解决大不多的并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。为什么使用生产者消费者模式在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为了解决这个问题引入了生产者和消费者模式。什么是生产者消费者模式生产者消原创 2021-09-05 13:22:33 · 1066 阅读 · 14 评论 -
python re模块常用方法全总结
re.findall()在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。语法格式:re.findall(pattern, string, flags=0)参数:pattern 匹配字符串的正则。string 待匹配的字符串。示例:需求:查找字符串中的所有数字result = re.findall(r'\d+','1python2hello3')print(result)结果['1', '2', '3']result = re.f原创 2021-09-02 13:58:26 · 368 阅读 · 0 评论 -
python 将列表中嵌套的子列表合并成一个列表 (优秀的技巧) 附一道面试题
列表中嵌套了多个子类表,如果想合并成[1,2,3,3,4,5]这种类型的,可以使用下面这种方法实现,比较省时省力num = [[1,2,3],[3,4,5]]result_info = sum(num, [])print(result_info)结果:[1, 2, 3, 3, 4, 5]不止于数字,字符串也可以info = [['a', 'b'], ['c', 'd', 'e']]result_info = sum(info, [])print(result_info)结果['a原创 2021-08-26 18:50:46 · 2344 阅读 · 7 评论 -
python 正则表达式
正则表达式的介绍1)在实际开发过程中经常会有查找符合某些复杂规则的字符串的需要,比如:邮箱、手机号码等,这时候想匹配或者查找符合某些规则的字符串就可以使用正则表达式了。2)正则表达式就是记录文本规则的代码re模块在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个 re 模块# 导入re模块import re# 使用match方法进行匹配操作result = re.match(正则表达式,要匹配的字符串)# 如果上一步匹配到数据的话,可以使用group方法来提取数据re原创 2021-08-24 22:45:16 · 482 阅读 · 6 评论 -
python 按照字典的键或者值进行排序
Python sorted() 函数sorted() 函数对所有可迭代的对象进行排序操作sorted 语法:sorted(iterable, key=None, reverse=False)参数说明:iterable – 可迭代对象。key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。1、对字典原创 2021-08-04 11:01:40 · 5596 阅读 · 2 评论 -
python *args **kwargs
1.*args学过python 的都知道*args是接受不定长位置参数的也就是可以接受多个参数def test(a,*args): print(a) print('-'*60) print(args,type(args)) print('-' * 60) print(*args)test(1,2,3,4)1------------------------------------------------------------(2, 3, 4) <原创 2021-08-01 11:53:32 · 149 阅读 · 2 评论 -
python 进程-线程-协程
了解多任务的概念多任务是指同一时间内执行多个任务,多任务的最大好处就是充分利用CPU资源,提高程序的执行效率多任务的执行方式①并发在一段时间内交替去执行任务。②对于单核CPU处理多任务,操作系统轮流让各个软件交替执行,比如让软件1执行0.01秒,切换到软件2,软件2执行0.01秒在切换到软件3…这样反复执行下去。表面上看感觉这些软件都在同时执行,但实际上每个软件都是交替执行的,由于CPU的执行速度实在太快了我们感觉这样软件都在同时执行一样。这里注意单核CPU是并发执行多任务的。③并行对于多核C.原创 2021-07-31 18:24:15 · 240 阅读 · 2 评论 -
python 面试题不断更新中......
1.谈一下python的GIL锁(1) 首先需要明确的是python和GIL没什么关系并不是python的特性,仅仅是由于历史的原因在CPython解释器中难以移除,因为python语言运行环境大部分默认在CPython解释器中。目的是解决多线程同时竞争程序中的全局变量而出现的线程安全问题(2).GIL是python的全局解释器锁,同一个进程中有多个线程运行,单个线程在运行python程序的时候会占用python解释器(即加了一把锁就是GIL),使该进程内其他线程无法执行,每个线程在执行的过程中都需要先原创 2021-07-26 20:53:14 · 169 阅读 · 0 评论 -
浅谈django,uWSGI,WSGI,Nginx之间的关系
说一下从用户发送请求到用户获得响应结果的流程浏览器发送http请求先到nginx,nginx接收到浏览器发送过来的http请求并进行解析,分析url,如果是静态文件请求就直接返回nginx配置的静态文件目录,直接返回用户请求的静态文件。如果不是静态文件的请求而是一个动态请求,那么nginx就将请求转发给uwsgi,uwsgi接收到请求之后并进行解析处理,处理成wsgi可以接收的格式,并发给wsgi,wsgi根据请求调用相应的API,也就是我们用框架(django,flask)写的接口,调用完之后把处理的原创 2021-07-15 11:18:10 · 405 阅读 · 2 评论