Python
文章平均质量分 53
郭大帅
这个作者很懒,什么都没留下…
展开
-
Python面试之装饰器的几种不同写法
废话不多说,直接撸代码import functoolsimport time# 1.普通装饰器def logger(func): def wrapper(*args, **kwargs): print('开始处理。。。') func(*args, **kwargs) print('处理结束。') return wrapper# 2.带参数的装饰器def say_hello(who): def wrapper(f原创 2021-04-01 11:12:08 · 146 阅读 · 0 评论 -
Python之 GC 机制总结
引用计数:当发生以下四种情况的时候,该对象的引用计数器+1 对象被创建 a=14 对象被引用 b=a 对象被作为参数,传到函数中 func(a) 对象作为一个元素,存储在容器中 List={a,”a”,”b”,2} 与上述情况相对应,当发生以下四种情况时,该对象的引用计数器-1 当该对象的别名被显式销毁时 del a 当该对象的引别名被赋予新的对象, a=26 一个对象离开它的作用域,例如 func函数执行完毕时,函数里面的局部变量的引用计数器就会减一(但原创 2021-03-31 11:17:31 · 446 阅读 · 1 评论 -
Django Channels 实现 websocket 通讯
官方文档如下:https://channels.readthedocs.io/en/stable/introduction.htmlChannels改变Django在下面和通过Django的同步核心编织异步代码,允许Django项目不仅处理HTTP,还需要处理需要长时间连接的协议 - WebSockets,MQTT,chatbots,业余无线电等等。它在保留Django同步和易用性的同时实现了这一点,允许您选择编写代码的方式 - 以Django视图,完全异步或两者混合的方式同步。除此之外,.原创 2021-03-23 10:33:59 · 699 阅读 · 1 评论 -
Python import 导入机制
题目有以下 A.py 和 B.py 两个模块:A.pyprint(1)aaa = 111print(2)def a(): print(3) from B import b print(4) b()print(5)aa = a()print(6)B.pyfrom A import aaadef b(): print(aaa)问:导入 import A 和 直接运行 python3 A.py,在结果上会有什么不同?原因.原创 2021-03-06 09:30:08 · 166 阅读 · 0 评论 -
Django框架学习day01-初识
1. 简介Django 是用python语言写的开源web开发框架,并遵循MVC设计。Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(DoNotRepeatYoursel...原创 2018-07-29 12:38:08 · 827 阅读 · 1 评论 -
Python中迭代器和生成器的理解
迭代器迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。1. 可迭代对象我们已经知道可以对list、tuple、str等类型的数据使用for...in...的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代。我们把可以通过for...in...这类语句迭...原创 2018-07-29 20:35:19 · 928 阅读 · 0 评论 -
Tornado框架
Tornado与Django DjangoDjango是走大而全的方向,注重的是高效开发,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。Django提供的方便,也意味着Django内置的ORM跟框架内的其他模块耦合程度高,应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的...原创 2018-08-03 16:47:32 · 4225 阅读 · 0 评论 -
Django框架学习day02-类视图
Django 中的类视图1. 类视图引入以函数的方式定义的视图称为函数视图,函数视图便于理解。但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,代码可读性与复用性都不佳。 def register(request): """处理注册""" # 获取请求方法,判断是GET/POST请求 if request...原创 2018-07-31 19:22:45 · 200 阅读 · 0 评论 -
Django REST framework
Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。通常简称为DRF框架 或 REST framework。特点提供了定义序列化器Serializer的方法,可以快速根据 Django ORM 或者其它库自动序列化/反序列化; 提供了丰富的类视图、Mixin扩展类,简化视图的编写; 丰富的定制层级:函数视图、类视图、视图集合...原创 2018-08-05 22:12:40 · 4312 阅读 · 0 评论 -
Django框架学习day03-数据库
Django中的数据库ORM框架O是object,也就类对象的意思,R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思,M是mapping,是映射的意思。在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应的表格中的数据。ORM框架还有一个功能,它可以根据我们设计的类自动帮我们生成数据库中的表格,省去了我们自己建表的过程。...原创 2018-08-01 21:08:12 · 204 阅读 · 0 评论 -
Django框架学习day04-Admin站点
Admin站点Django能够根据定义的模型类自动地生成管理页面。后台管理系统使用Django的管理模块,需要按照如下步骤操作:管理界面本地化 创建管理员 注册模型类 自定义管理页面1 管理界面本地化在settings.py中设置语言和时区LANGUAGE_CODE = 'zh-hans' # 使用中国语言TIME_ZONE = 'Asia/Shanghai' # ...原创 2018-08-03 10:53:59 · 199 阅读 · 0 评论 -
微信开发总结(笔记记录)
有关微信开发的总结一.首先大致分享一下官方开发文档: 公众平台-小程序开发文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/ext.html 公众平台技术开发文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp142114122...原创 2018-12-12 18:21:51 · 1022 阅读 · 0 评论 -
工欲善其事,必先利其器(装逼工具)
工欲善其事,必先利其器(装逼工具)Pycharm。专业的python IDE,功能很强大,特别喜欢它的代码merge工具,不想被编辑器折腾死的推荐直接使用,五星级推荐。(除了内存占用大点)。如果你不喜欢折腾编辑器,请直接用 IDE,经常看见一些用裸编辑器写代码的,代码规范检测都没有。 vim。本人比较喜欢的编辑器,平常写代码、博客、文档等使用频繁,配上各种插件编辑效率很高。http://vi...原创 2019-02-26 17:19:05 · 491 阅读 · 0 评论 -
Python 高级函数
1、mapmap()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回2、reducereduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算3、filter和map()类似,filter(...原创 2019-08-08 16:54:29 · 119 阅读 · 0 评论 -
Redis 浅谈
1、关于nosql介绍1、1 NoSQL:一类新出现的数据库(not only sql)泛指非关系型的数据库不支持SQL语法存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式NoSQL的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景NoSQL中的产品种类相当多:MongodbRedisHbase hadoopCass...原创 2018-07-12 19:28:42 · 283 阅读 · 0 评论 -
后端框架之Flask--初识
1、Web框架web网站发展至今,特别是服务器端,涉及到的知识、内容,非常广泛。这对程序员的要求会越来越高。如果采用成熟,稳健的框架,那么一些基础的工作,比如,安全性,数据流控制等都可以让框架来处理,那么程序开发人员可以把精力放在具体的业务逻辑上面。使用框架的优点:稳定性和可扩展性强可以降低开发难度,提高开发效率。在 Python 中常用的 Web 框架有: Flask 、Django、To...原创 2018-07-05 20:15:10 · 5658 阅读 · 0 评论 -
后端框架之Flask--蓝图和测试单元
BlueprintBlueprint概念:简单来说,Blueprint 是一个存储操作方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用,Flask 可以通过Blueprint来组织URL以及处理请求。Flask使用Blueprint让应用实现模块化,在Flask中,Blueprint具有如下属性:一个应用可以具有多个Blueprint可以将一个Blueprint注册到...原创 2018-07-11 18:46:56 · 511 阅读 · 0 评论 -
Python中使用的正则表达式
匹配当个字符:字符功能.匹配任意1个字符(除了\n)[ ]匹配[ ]中列举的字符\d匹配数字,即0-9\D匹配非数字,即不是数字\s匹配空白,即 空格,tab键\S匹配非空白\w匹配单词字符,即a-z、A-Z、0-9、_\W匹配非单词字符匹配多个字符:字符功能*匹配前一个字符出现0次或者无限次,即可有可无+匹配前一个字符出现1次或者无限次,即至少有1次?匹配前一个字符出现1次或者0次,即要么有1次...原创 2018-05-28 20:12:33 · 324 阅读 · 0 评论 -
Python 疑难点一: GIL 和 深拷贝/浅拷贝
GIL (全局解释器锁) 一般面试题: 描述Python GIL的概念, 以及它对python多线程的影响 参考答案: 1. GIL 跟Python 语言没有任何关系 , 而仅仅只是跟cpython 解释器有关, 由于历史原因,很久之前的cpu 仅仅只供单线程使用,而如今多cpu 多线程 多任务为主,难以移除GIL; 2.GIL 的意...原创 2018-05-29 21:44:59 · 162 阅读 · 0 评论 -
Python 疑难点二: 私有化 和 property 属性
私有化: 1.几种下划线的作用:xx: 公有变量_x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问__xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)__xx__:双前后下划线,用户名字空间的魔法对象或属性。例如:__init__ , __ 不要自己发明这样的名字xx_:单后置下划线...原创 2018-05-31 19:00:40 · 364 阅读 · 0 评论 -
web服务器之mini_frame框架demo
dynamic/mini_frame.pyimport reimport pymysqlimport urllib.parseimport loggingURL_FUNC_DICT = dict()"""URL_FUNC_DICT = { "/index.py" : index, "/center.py" : center, }""...原创 2018-06-12 20:30:07 · 346 阅读 · 0 评论 -
Python 中的魔法属性
无论人或事物往往都有不按套路出牌的情况,Python的类属性也是如此,存在着一些具有特殊含义的属性,详情如下:1. __doc__表示类的描述信息class Foo: """ 描述类信息,这是用于看片的神奇 """ def func(self): passprint(Foo.__doc__)#输出:类的描述信息2. __module__ 和__cl...原创 2018-05-31 19:28:13 · 672 阅读 · 0 评论 -
Python2.x 和 Python3.x 的区别
1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果。 Py3.1性能比Py2.5慢15%,还有很大的提升空间。2.编码 Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的: >>> 中国 = 'china' >>&...转载 2018-06-07 21:20:34 · 149 阅读 · 0 评论 -
Python中注意事项(待完善)
动态导入模块: python 中不仅可以用过import 在开头导入其他模块, 可以通过代码动态导入模块,获取模块对象,从而调用其他模块的函数或者方法, 格式如下:# import frame_name --->找frame_name.py frame = __import__(frame_name) # 返回值标记这 导入的这个模板 app = getattr...原创 2018-06-07 20:14:29 · 218 阅读 · 0 评论 -
Python 中的闭包 和 装饰器
闭包 1.闭包的概念及三要素: 闭包其实就是一种代码的实现方式 闭包的三要素:1. 函数的嵌套 ; 2.内层函数使用外层函数的变量 ;3.外层函数返回内层函数的引用 举例如下:# 定义一个外部函数def test(number): # 在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包...原创 2018-06-09 20:01:02 · 365 阅读 · 0 评论 -
后端框架之Flask--模板
1、模板在前面的示例中,视图函数的主要作用是生成请求的响应,这是最简单的请求。实际上,视图函数有两个作用:处理业务逻辑和返回响应内容。在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本。本节学到的模板,它的作用即是承担视图函数的另一个作用,即返回响应内容。模板其实是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,告诉模板引擎其具体的值需要从使用的数据中获取使用真实值...原创 2018-07-08 20:36:08 · 1070 阅读 · 0 评论 -
CSRF--跨站请求伪造
CSRFCSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题:个人隐私泄露以及财产安全。CSRF攻击示意图客户端访问服务器时没有同服务器做安全验证防止 CSRF 攻击步骤:在客户端向后端请求界面数据的时候,后端会往...原创 2018-07-08 21:00:07 · 294 阅读 · 0 评论 -
后端框架之Flask--SQLAlchemy 数据库操作
1、ORMORM 全拼Object-Relation Mapping.中文意为 对象-关系映射.主要实现模型对象到关系数据库数据的映射.ORM图解:优点 :只需要面向对象编程, 不需要面向数据库编写代码.对数据库的操作都转化成对类属性和方法的操作.不用编写各种数据库的sql语句.实现了数据模型与数据库的解耦, 屏蔽了不同数据库操作上的差异.不在关注用的是mysql、oracle...等.通过简单的...原创 2018-07-10 14:41:18 · 3097 阅读 · 1 评论 -
web服务器----epoll的简单用法
IO多路复用就是我们说的select,poll,epoll,有些地方也称这种IO方式为event driven IO。select/epoll的好处就在于单个process就可以同时处理多个网络连接的IO。它的基本原理就是select,poll,epoll这个function会不断的轮询所负责的所有socket,当某个socket有数据到达了,就通知用户进程。代码如下:import socket...原创 2018-05-28 18:45:08 · 207 阅读 · 0 评论