python range() 和xrange()的区别
?
1
2
3
4
5
6
7
8
9
10
11
12
...
Python中的垃圾回收机制
一、概述
python采用的是引用计数机制为主,标记-清除和分代收集(隔代回收)两种机制为辅的策略。
现在的高级语言如java,c#等,都采用了垃圾收集机制,而不再是c,c++里用户自己管理维护内存的方式。自己管理内存极其自由,可以任意申请内存,但如同一把双刃剑,为大量内存泄露,悬空指针等bug埋下隐患。对于一个字符串、列表、类甚至数值都是对象,且定位简单易用的语言,自然不会让用户去处理如何分配回收内存的问题。python里也同java一样采用了垃圾收集机制,不过不一样的是:python采用的是引用计数机制为主,标记-清除和分代收集(隔代回收)两种机制为辅的策略。
二、引用计数机制
引用计数法机制的原理是:每个对象维护一个ob_ref字段,用来记录该对象当前被引用的次数,每当新的引用指向该对象时,它的引用计数ob_ref加1,每当该对象的引用失效时计数ob_ref减1,一旦对象的引用计数为0,该对象立即被回收,对象占用的内存空间将被释放。它的缺点是需要额外的空间维护引用计数,这个问题是其次的,不过最主要的问题 ...
python3中的反射详解
相信很多人和我一样第一次听到反射这个词语是特别陌生的,再次之前我最熟悉的还是c语言,但是在c语言中并没有反射这种机制。
c++中原生并不支持反射机制,但是Java中是支持的。在高级的Python中当然也是支持的。
什么是反射?
说到反射,我并不想用很多专业晦涩难懂的词语,因为也不是很懂害怕出错,如果那里有错还请指正。
相信我们是经常使用浏览器的,在使用浏览器的时候最重要的也不就是输入网址了,在浏览器的地址栏中输入对应的网址,对应的网站也就会有反应,并给你返回对应的网页。首相我们要知道,我们输入到浏览器地址栏的url是一个字符串,这个字符串的url到web服务器上后是怎么找到对应的代码函数并执行后给我们返回内容的。
比如:现在我们有这样一个需求,已知有三个函数fun1, fun2, fun3这三个函数,我们都找到如果我们想调用其中某个函数的时候,我们就只有在代码中写好,比如我写了一个这样的代码来实现这个功能:
首先在文件项目下创建两个文件:test.py, s.py这两个python文件
...
Python3新特性:类型注解
前几天有同学问到,这个写法是什么意思:
def add(x:int, y:int) -> int:
return x + y
我们知道 Python 是一种动态语言,变量以及函数的参数是不区分类型。因此我们定义函数只需要这样写就可以了:
def add(x, y):
return x + y
这样的好处是有极大的灵活性,但坏处就是对于别人代码,无法一眼判断出参数的类型,IDE 也无法给出正确的提示。
于是 Python 3 提供了一个新的特性:函数注解
也就是文章开头的这个例子:
def add(x:int, y:int) -> int:
return x + y
用 : 类型 的形式指定函数的参数类型,用 -> 类型 的形式指定函数的返回值类型。
然后特别要强调的是,Python 解释器并不会因为这些注解而提供额外的校验,没有任何的类型检查工作。也就是说,这些类型注解加不加,对你的代码来说没有任何影响:
...
Python2版本和python3的区别
print 函数:这个函数其实很简单,区别也很直接,不过网上讲的是真专业。。我们知道Python2.6和Python2.7是过渡版本,这些是可以兼容一部分Python3的语法的,print()是在Python3常用版本,Python2是不用加括号和加括号兼容的。
我们说的像print简单的区别就是后面加上了括号,其实更确切的说是把print语句变成了print()函数。这个加不加括号直接决定了是函数还是语句的区别。在类里面是属性和方法的区别。大家注意一下就好。
Unicode:Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。现在 Python 3,我们最终有了 Unicode (utf-8) 字符串,以及一个字节类:byte 和bytearrays。由于 Python3.X 源码文件默认使用utf-8编码
所以以前在用Python2的时候总是要在文件的第一行加上一行注释:
Unicode:Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。现在 Python 3,我们最终有了 U ...
Python3和Python2中int和long区别
LONG长整型python2有非浮点数准备的int和long类型。
int类型最大值不能超过sys.maxint,而且这个最大值是平台相关的。
可以通过在数字的末尾附上一个L来定义长整型,显然,它比int类型表示的数字范围更大。
在python3里,只有一种整数类型int,大多数情况下,和python2中的长整型类似。
python2
python3
备注
x = 1000000000000L
x = 1000000000000
python2中的十进制长整型在python3中被替换为十进制普通整数
x = 0xFFFFFFFFFFFFL
x = 0xFFFFFFFFFFFF
python2里的十六进制长整型在python3里被替换为十六进制的普通整数
long(x)
int(x)
python3没有long()
type(x) is long
type(x) is int
python3用int判断是否为整型
isinstance(x, long)
isinstance(x, int)
int检查整数类型
兄弟会_flask笔记01
课程介绍前言我们用flask是写后台的
如果你看一个小程序很好看,你可以把他爬下来,或者通过技术的手段
工具,实现反编译
举例:”网易严选” 网页端 pc端 app 甚至微信小程序
你的手机里面的程序都会产生文件,所以你才会越用越卡
node.js开发的一个工具,能反编译成一个差不多的东西
这个能快到什么程度呢,一个比较熟练的人,一天之内包括分编译,能把这个程序调试的差不多
比如这个:牛刀云包括猪八戒网,都行
我们要做的就是使用flask做后台给小程序提供接口,小程序任意类型的都能做
虚拟环境在这之前我们需要学一个虚拟环境:VirtualEnv用于在一台机器上创建多个独立的Python虚拟运行环境,多个Python环境相互独立,互不影响,它能够:
在没有权限的情况下安装新套件
不同应用可以使用不同的套件版本
套件升级不影响其他应用
详情在这里:Python中的虚拟环境-virtualenv
其实这个虚拟环境也有缺点,就是他只能用于python,我们可以在了解一个叫做docker这个东东
docker就相当于硬件级的环境,这个可以快速的部署,它适合在大型的集群的上面才能显示他的优势 ...
Django笔记05-后台展示
后台商品数据展示中间件引言后台的权限,实际上只能是管理员能访问,而我们现在谁都能访问
这里我们需要做一个验证
这次我们先做一个模拟的,(假的),等前台都写完了,会有权限管理来用
这个不需要用过多的时间
如果要进行身份验证,我们做各种操作都需要验证
因此我们框架中有一个中间件
中间件概念中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出激活:添加到Django配置文件中的MIDDLEWARE_CLASSES元组中使用中间件,可以干扰整个处理过程,每次请求中都会执行中间件的这个方法
比如这样12345678910111213141516171819202122232425from django.http import HttpResponseimport reclass AdminLoginMiddleware: def __init__(self, get_response): self.get_response = get_response # One-time configuration and ...
Django的MVT模式与MVC模式
Django的MVT模式与MVC模式在正式开始coding之前,我觉得有必要探讨下Django的MVT模式,理论和实践相结合,才能更好的掌握一门技术。
Django中的MVT模式,Django就是属于MVC模式。
MVC(Model-View-Controller)模型-视图-控制器,MVC是一种 软件框架模式,最开始用于Desktop程序开发,现在已被广泛使用,包括Web开发,MVT(Model-View- Template),Django内部的URLconf作为控制器的角色,负责了接收用户请求和转发请求的工作,Django 里更关注的是模型(Model)、模板(Template)和视图(Views),故称之为 Django MVT 模式。
介绍MVT:M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。
V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。
T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html。
Django中MVT的设计是遵守 MVC的流程去执行。
MVT即模型-模版-视图模式,其标准名称是 ...
pycharm中运行django的相关配置
起步小编在使用pycharm写django项目的时候遇到一个问题:
在cmd中能够正常运行django程序,pycharm 中运行不了django的程序,看错误是:
script12345django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
结果百度了半天没结果,最后还是在 老外的网站上找到了答案:
解决方案本来django项目在 python shell 中可以完美运行,在pycharm里面就不行,原因是pycharm 要你配置一个 环境变量 DJANGO_SETTINGS_MODULE 这个变量告诉django项目去找哪一个settings 文件。
具体的步骤:1、Ru ...