- 博客(37)
- 收藏
- 关注
原创 Python的attr三兄弟(getattr、hasattr、setatter)
阅读源码的时候,经常看见hasattr、getattr、setattr,感觉很酷炫的同时,也是不解其义,特此来说说道说道这三兄弟getattr已经介绍过了,主要说说setattr和hasattrhasattr(对象,属性名)I、基本操作1、查看对是不是该属性,返回值为boolean类型2、 一个危险的Python函数,不推荐使用这篇文章说道hasattr会把@property装饰的方法...
2019-04-08 11:31:24 1039 1
原创 python getattr的美妙生活
一、简介1、getattr是Python的内置函数2、用法getattr(object,“attribution”,None)object: 对象attribution:实例方法、或者类方法(object是一个类对象的时候)必须是strNone:默认值,如果没有attribution,或者没有返回值,返回默认值一句话简介:拿到对象是的该属性二、实例class Test:...
2019-04-08 11:30:01 276
原创 Pytho面向对象的成员组成部分
类成员可以分为三类:字段、方法、属性一、字段字段包含普通字段和静态字段,在定义是有区别,本质的区别在于他们内存中保存的位置不同class TestObj: # 静态字段 my_class = '五(三)班' def __init__(self, name): self.name = name# 直接通过类访问静态字段TestObj.my_cl...
2019-04-08 11:28:06 228
原创 Python实现类似Java的反射
反射是通过字符串的形式操作对象的相关成员反射也就是通过字符串的形式,导入模块,通过字符串的形式去模块中寻找指定函数,并执行。Python中的反射功能有四个主要内置函数提供:1、hasattr(模块, ‘成员’):根据字符串的形式,去某个模块中检查是否含有某个成员2、getattr(模块, ‘成员’):根据字符串的形式,去某个模块中获取成员。详细用法3、setattr(模块, ‘成员...
2019-04-08 11:26:18 858
原创 CPU密集型和I/O密集型
I、CPU密集型(CPU-bound)一、CPU密集型也叫计算密集型,指的是硬盘、内存在读写数据时要比CPU速度快的多,CPU要读写I/O时,I/O在很短的时间内完成,CPU有很多的运算还要处理二、在多重程序系统(即同时运行多道程序或多处理机同时执行多个程序序列)中,大部份时间用来做计算、逻辑判断等CPU动作的程序称之CPU bound。例如一个计算圆周率至小数点一千位以下的程序,在执行的过...
2019-04-08 11:17:15 643
原创 Python协程
本文主要介绍一下协程的基本概念、对比多线程的优势,以及Python2.x系列和Python3.x系列的大体差别I、概念协程(coroutine),又称为微线程,纤程。协程的作用:在执行A函数的时候,可以随时中断,去执行B函数,然后中断继续执行A函数(可以自动切换),单着一过程并不是函数调用(没有调用语句),过程很像多线程,然而协程只有一个线程在执行II、优势协程可以很完美的处理IO密集型...
2019-04-08 09:47:20 195
原创 tornado之RequestHandler
tornado的两个关键模块就是web和 ioloop RequestHandler就是封装在web.py里面,它是每个视图类必须继承的父类, 它里面有几种方法用处很多: 1、set_status(status_code, reason):设置回复状态码,status_code是响应状态码,reason是响应描述2、get_status():返回我们回复的状态码3、get_query...
2018-05-14 20:45:18 2632
原创 RESTful格式规范
RESTful是接口开发格式里面很重要的一个山头,基本开发接口都需要遵守这个规范,它共有十条规范格式: 1、域名,一般将api放在组域名下 http://www.example.com/api/2、版本,一般把接口的版本号放在url中 http://www.example.com/app/1.0/info http://www.example.co...
2018-05-10 18:58:38 2304
原创 多进程和多线程
进程是CPU资源分配和调度的独立单位 线程是CPU最小的之心单元 编写多进程一般使用跨平台版本的模块 multiprocessing multiprocessing提供了一个Process类来代表进程类from multiprocessing import Process//进程要执行的代码def say(name): print("%s say hello"%nam...
2018-05-08 10:18:03 233
原创 python的函数参数
python函数拥有四种参数类型:位置参数、默认参数、可变参数、关键字参数位置参数:位置参数也是一个函数被调用的时候必须传入的参数,如果不传就会报没有位置参数的错误默认参数:当一个拥有默认参数的函数被调用的时候,如果默认参数没有被新的值覆盖,就会使用默认参数的值带入函数,这个值是可以被覆盖的可变参数:可变参数的本质就是tuple,函数使用*args 表示可变参数,这个函数可以一次接受多...
2018-05-06 10:53:28 344
原创 class-besd-views常用Mixin
前后端分离,不需要渲染模板,只使用常用的MixinLoginRequiredMixin: 检测用户登录状态, 导入:from django.contrib.auth.mixins import LoginRequiredMixin 用法:直接在class views 上继承,放在父类View前面PermissionRequiredMixin: 验证当前用户是否满足当前权限 导入:...
2018-03-28 10:10:52 439
原创 用python实现QQ第三方登录
接到任务做微信登录和QQ登录,一如既往的去github上看有不有好的sdk,可惜铩羽而归,没办法只好去看官方文档qq官方获取用户信息的地址 由于我这项目是前后端分离,开心的是参数神马的 前端已经给我了,我直接拿着这些参数拼接一下url就可以获取qq用户的数据 哈哈。。。。至于这些参数前端在哪请求的我就无从而知了。。前端传过来的参数:errCode:0expires_in:15289684412
2018-03-19 15:27:33 9434
原创 git版本控制系统
git 常用命令创建版本库git init 初始化一个git版本管理仓库(cd到根目录)git add file 添加文件到暂存区(被添加的文件必须在项目目录下,只是添加,还没有提交,版本库里面目前还没有这个文件)git commit -m "提交注释" 把暂存区的文件提交到当前分支上(每次提交内容需要简单的描述一下,便于以后查看)commit可以一次提交很多文件,所...
2018-02-28 19:07:48 318
原创 python 的几个源生方法
描述map()是python内置的高阶函数,它接受一个函数和一个list,吧函数作用到列表的每个元素上,得到一个新的list语法map(f,list)参数f 是一个函数 list是一个列表实例a = [1,2,3]def f(s): s = s*s return sb = map(f, a)print(b)-----------...
2018-02-07 14:51:25 348
原创 python的垃圾回收 机制
python和Jave、C一样使用了垃圾回收机制,不一样的是python使用了引用计数 机制为主,分代收集机制为辅intern机制intern机制是引用计数机制里面的一种,如果一个数据重复存储多次,python将不会在读开辟空间来存储这条数据,它会使用引用计数的方式,存入的数据江会被指定到已经有据的那篇空间一切皆对象python里面一切皆对象,PyObject是每一个对象都有
2018-02-02 17:47:34 251
原创 mysql基本操作
打开mysql服务端: sudo service mysql start查看进程中是否存在进程: ps ajx|grep mysql关闭服务 sudo service mysql stop 重启服务 sudo service mysql restartmysql的配置文件地址: /etc/mysql/mysql.conf.d/myysql.cof客户端连接:
2018-02-02 16:47:03 409
原创 python 的字典、列表、字符串操作
1、python字符操作:字符串操作很多。可以在ipython 通过 a = "" a.tab键查看部分(1) 字符串本质是字符序列,是不可变的但是可以进行赋值(=)、复制(*)、拼接(+)(2)replace()替换,把字符串进行替换(可以整段替换,可以替换部分)(3)split() 分割,根据字符串里面的元素把字符串进行分
2018-01-24 21:30:34 643
原创 属性property
class Money(object): def __init__(self): self.money = 0 def get_money(self): return self.money def set_money(self, value): if isinstance(value, int):
2018-01-19 17:31:02 339
原创 python 装饰器
def demo(fun): def inner(): print("hello word") return fun() return inner@demodef decorator(): print("哈哈哈")if __name__ == '__main__': decorator()一个函数在没有呗调用的时候是不
2018-01-19 17:05:37 256
原创 python 闭包
闭包就是定义一个函数,在这个函数里面再定义一个函数,并且这个函数用到了外面的函数的变量,将这个函数和使用的变量称之为闭包如果需要修改外层函数已经赋值的变量需要使用nonlocaldef con(start=0): def demo1(): nonlocal start start += 1 return start ret
2018-01-18 14:09:19 193
原创 python 生成器
生成器是一类特殊的迭代器创建生成器最简单的方法是吧列表生成式的”[]”改成”()”(x*2 for x in range(10))可以按照迭代器的方法来使用,通过next()、list()、for循环使用使用生成器来完成菲波拉切数列更加简便def fib(n): current = 0 num1, num2 = 0, 1 num = n
2018-01-18 13:50:42 250
原创 python 迭代器
迭代是访问集合元素的一种方式,迭代器是一个可以记住遍历位置的对象,从第一个元素迭代到最后一个元素,迭代器只能往前,不能后退。可迭代对象: list、dict、tuple、str 不能迭代: int类型 把可以通过for...in...这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象可以使用isinstance()来判断一个对象是否是可迭代对象( Iterable )In
2018-01-18 13:10:00 291
原创 reload()函数
reload函数的作用是重新加载已经导入过的包 在python中由.py结尾的文件都是一个可以调用执行的模块, 但是由于导入模块会浪费资源(模块导入必须找到代码文件,并且把它转化为字节码,还要运行代码), 所以python在一个模块中已经导入了一个包,如果这个包里面的代码再发生变化的话,在这个模块中的包还是按照没有变更之前的代码运行,但是这显然是不行的,这时候就需要用reload了。re
2018-01-17 21:14:07 2247
原创 async的使用方法
async意思就是异步,用它来实现协程再好不过了async def demo1(): print("start1") print("end1")async def demo2(): print("start2") print("1") print("2") print('end2')c = demo1()d = demo2()
2018-01-17 21:01:00 11104 1
原创 用python实现一个栈类
栈(Stack)的数据结构特点就是先进后出,就像自动售货机 里面的商品一样,最先放进去的最后出来,最后放进去的却是最先出来用python类实现栈class Stack(object): def __init__(self): # 创建一个空的栈 self.item = [] def push(item): # 添加新元素
2018-01-12 18:55:11 2054
原创 Python的几种常见排序
常见的排序有:快速排序、冒泡排序、希尔排序、选择排序、插入排序、归并排序冒泡排序:def bubble_sort(li): n = len(li) # 遍历列表,让下标从0取得列表右边倒数对二个位置 # 一趟冒泡,让最大的数移动到最右边 for j in range(n-1): flag = 0 for i in ran
2018-01-11 22:06:23 813
原创 list、dict、tuple分类
看到一个题目,说是把list、dict、tuple进行分类由于list和tuple的元素都是单个,并且用逗号分开, list和tuple归类于序列化,dict归类于映射类型
2018-01-10 22:47:25 464
原创 用Python获取文件下的所有文件
python 获取当前文件下的所有文件有两个方法:os.walk() 、os.listdir() 获取当前路经:sys.path[0]、sys.argv[0]os.walk()import osdef get_file_name(path_file): for root, dirs, files in os.walk(path_file): pri
2018-01-10 19:42:27 345
原创 用Python获取文件下的所有文件
python 获取当前文件下的所有文件有两个方法:os.walk() 、os.listdir() 获取当前路经:sys.path[0]、sys.argv[0]os.walk()import osdef get_file_name(path_file): for root, dirs, files in os.walk(path_file): print(r
2018-01-10 19:23:24 1390
原创 合理使用缓存
一个优秀的项目,其中必然使用到了缓存机制 一个网站遇到性能瓶颈是,第一个解决方案一般是使用缓存,缓存的应用面特别广,无论是客户端,还是应用服务器,或是存储服务器。缓存一般存放读写比价频繁,变化较少的数据,应用程序读取数据时先从缓存中读取数据,获取不到再访问数据库,再放到缓存中,以便于下次快速获取。缓存并不是没有缺点,内存资源是宝贵的,不可能讲所有的数据都放到缓存中,对于休干比较频繁的数据
2018-01-09 23:43:48 433
原创 解决高并发的几种方法
对于开发人员来说,网站的优化主要从三个方面说起:1、web前端性能优化1.1 减少 http请求1.2 使用浏览器缓存1.3 启用压缩1.4 CSS放在最上面,JS放在最下面2、应用服务器性能优化2.1 合理使用缓存2.2 异步操作2.3 使用集群2.4 代码优化3、 存储服务器性能优化3.1 固态硬盘的效
2018-01-09 23:23:07 1988
转载 Django Restframework
1.调用先后顺序--其实一个图就可以搞定了url(rooter) -> views(viewsets) -> serializer ->model其实和django一样 也是这个套路,不过更难搞一些model不说了 简历django的ormserializer 就是要序列化数据,这个我还不是很懂为啥要序列化数据呢,然后还要反序列化,直接读出数据返回jso
2017-11-10 11:21:33 250
转载 isinstance函数
isinstance是一个python的内建函数,用来判断一个对象的变量类型,他的父类(object)是classinfo语法:isinstance(object, classinfo)如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是
2017-11-10 09:26:25 623
转载 Django项目创建的基本流程
创建 Django 项目的基本步骤1. 创建一个 Django 项目:django-admin startproject projectname2. 创建数据库:python manage.py syncdb3. 创建 App:python manage.py startapp appname4. 创建 A
2017-11-10 09:21:09 367
转载 网络传输经历了啥
作者:邱永臣链接:https://www.zhihu.com/question/20513729/answer/96332435来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。假设你用一个全新的浏览器(第一次启动的那种),访问百度(http://www.baidu.com/),在你敲入网址并按下回车之后,将会发生以下神奇的事情:浏览器先尝试
2017-11-07 17:57:50 271
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人