python
江洗河
这个作者很懒,什么都没留下…
展开
-
python魔术方法
常规:__del__魔术方法:对象即将被释放的时候,会调用这个方法。注意如果这个对象产生了循环引用,并且实现了__del__方法,那么这个对象将得不到释放,从而产生内存泄漏。因此慎用这个方法。__new__魔术方法:这个方法用来创建对象。如果想在创建对象的时候做些事情,那么可以重写这个方法。__class__魔术属性:用来返回这个对象所属的类。如果一个类调用这个属性,那么得到的是这个类...原创 2019-07-23 19:34:19 · 224 阅读 · 0 评论 -
字符串集合算法题汇总(使用C++和python语言)--easy002
删除字符串中出现次数最少的字符思路:计数排序法;针对于多组测试数据数组初始化,这点要注意不能直接使用 a [26] = { 0 };写复杂了反而测试用例通不过,笨点按步骤循环吧#include <iostream>#include <string>using namespace std;int main(){ int i, len ,min; ...原创 2019-08-07 00:06:10 · 120 阅读 · 0 评论 -
字符串集合算法题汇总(使用C++和python语言)--easy001
计算字符串最后一个单词的长度,单词以空格隔开自己的思路:#include<iostream>#include<string>using namespace std;int f(){ string s; while(getline(cin,s)){ int cut = s.rfind(' '); string s...原创 2019-08-06 21:46:01 · 230 阅读 · 0 评论 -
字符串集合算法题汇总(使用C++和python语言)--hard001
字符串排序这道题难点在于逆序和非英文字母的保持原位,可以考虑使用vector的push_back单独处理英文字母的逆序,再并到原字符串#include<vector>#include<iostream>#include<string> using namespace std; int main(){ string s; vec...原创 2019-08-07 22:11:46 · 234 阅读 · 0 评论 -
python多任务编程
进程什么是进程:操作系统在运行过程中,一个程序运行起来就是一个进程。在Python中,多进程编程可以让程序运行效率更高。同一时刻可以做更多的事情。因此多进程编程显得十分重要。multiprocessing模块:multiprocessing是Python中一个专门用来创建创建多进程的库,multiprocessing提供了一个Process类来创建进程。以下用一个例子讲解Process类的...原创 2019-07-22 23:25:25 · 130 阅读 · 0 评论 -
排序算法demo
排序算法有段时间没看了,之前一直用伪码,尝试用python写下文章最后有自己当初总结的快速记住各排序算法的时间复杂度、空间复杂度、稳定性、适用场景的小口诀冒泡排序法demo(Buddle Sort)def bubble (data): for i in range(7,-1,-1): # 扫描次数 for j in range(i): if d...原创 2019-07-22 23:05:27 · 209 阅读 · 0 评论 -
gc模块
Python中的gc模块封装了许多和对象以及垃圾回收相关的方法。导致引用计数+1的情况:对象被创建,并被一个对象所引用。例如a=23对象被另外一个变量引用。例如b=a。对象被作为参数传递给函数。例如func(a)。对象被添加到容器中,比如添加到列表、元组、字典、集合中等。例如temp=[a]。导致引用计数-1的情况:引用这个对象的变量被删掉掉了。例如del a。引用这个对象的...原创 2019-07-21 23:01:50 · 214 阅读 · 0 评论 -
Python垃圾回收机制
引用计数:在Python中,使用了引用计数这一技术实现内存管理。一个对象被创建完成后就有一个变量指向它,那么就说明它的引用计数为1,以后如果有其它变量指向它,引用计数也会相应增加,如果将一个变量不再执行这个对象,那么这个对象的引用计数减1。如果一个对象没有任何变量指向它,也即引用计数为0,那么这个对象会被Python回收。示例代码如下:class Person(object): def...原创 2019-07-21 22:53:04 · 81 阅读 · 0 评论 -
对象池
小整数对象池:在一个程序中,[-5,256]之间的数字是经常被使用的。因此Python在程序运行过程中,定义好了一个小整数池,也就是说从-5到256之间的数字都是提前在内存中建立好的,不会被系统回收,并且以后你创建了一个变量是在这个范围之内,那么都是同一个对象。同样对于单个字母也是一样的。示例:a = 1b = 1# 以下两个值是一样的print(id(a))print(id(b))...原创 2019-07-21 22:38:17 · 90 阅读 · 0 评论 -
面向对象总结
动态添加属性:动态添加属性,就是这个属性不是在类定义的时候添加的,而是在程序运行过程中添加的,动态添加属性有两种方法,第一个是直接通过对象名.属性名,第二个是通过setattr添加:第一种:使用对象名.属性名添加,示例如下:p.age = 18第二种:使用setattr函数添加,示例如下: if not hasattr(p,'age'): setattr(p,'age',...原创 2019-07-21 10:26:26 · 176 阅读 · 0 评论 -
自定义中间件和上下文处理器
什么是中间件?中间件是介于request与response处理之间的一道处理过程,它是一个轻量、低级别的插件系统,并且在全局上改变django的输入与输出。每个中间件组件都负责做一些特定的功能。比如在request到达视图函数之前,可以使用中间件来做一些相关的事情。比如可以判断当前这个用户有没有登录,如果登录了,就绑定一个user对象到request上。也可以在response到达浏览器之前...原创 2019-07-20 20:22:58 · 122 阅读 · 0 评论 -
生成器
为什么需要生成器:假如现在有一个需求,要打印从1-1亿的整形。如果采用普通的方式,直接调用range函数,那么程序肯定会崩溃,因为range(1,100000000)函数直接产生一个从1-1亿的列表,这个列表中的所有数据都是存放在内存中的,会导致内存爆满。这时候可以采用生成器来解决这个问题,生成器不会一次性把所有数据都加载到内存中,而是在循环的时候临时生成的,循环一次生成一个,所以在程序运行期间...原创 2019-07-19 22:26:25 · 127 阅读 · 0 评论 -
迭代器
什么是迭代器?迭代器可以在访问集合的时候变得非常方便。之前通过for...in...的方式访问一个集合的时候,就是使用迭代器完成的。如果没有迭代器,那么我们只能通过while循环,每次循环的时候通过下标访问了。可迭代的对象:可以直接使用for循环遍历的对象,成为可迭代的对象,常见的可迭代的对象有:list、tuple、dict、set、str以及生成器。更加专业的判断一个对象是否是可迭代的...原创 2019-07-19 21:36:14 · 201 阅读 · 0 评论 -
字符串集合算法题汇总(使用C++和python语言)--mid001
计算字符的个数需要注意的是字符不区分大小写还有字符中可能含有空格#include<iostream>#include<string> using namespace std; int main(){ string s1,s2; while(getline(cin,s1)&&getline(cin,s2)){ ...原创 2019-08-07 20:12:06 · 370 阅读 · 0 评论