python快速交换两个变量数据

利用python位运算^进行快速数据交换
最快的交换数据方式利用python中的位运算:异或运算方式^(A与B不同为1时,A、B的预算结果才为1,否则为0 )

a = 8 00000000 00000000 00000000 0001000
b = 6 00000000 00000000 00000000 0000110
第一次
a = a^b 00000000 00000000 00000000 0001110 14
第二次 00000000 00000000 00000000 0000110 6
b = a^b 00000000 00000000 00000000 0001000 8
第三次 00000000 00000000 00000000 0001110
a = a^b 00000000 00000000 00000000 0000110 6
至此a = 6 b = 8

实际操作

a = 100000
b = 2334234
a = a^b
b = a^b
a = a^b
print("a=%s,b=%s" %(a,b))
a=2334234,b=100000
a = 10
b = 10
a = a^b
b = a^b
a = a^b
print("a = %s ,b = %s" %(a,b))
a = 10 ,b = 10
def exchange_v(a,b):
if a == b:
return(a,b)
else:
a = a^b
b = a^b
a = a^b
return(a,b)

if __name__=='__main__':
print(exchange_v(10,-11)

优点:不浪费存储空间
位运算速度快速

从测试来看:建议对传进去的值进行逻辑判断,如果相同,那么直接返回,不做位判断操作

python-django预定义字段说明

常用的Django预定义字段类型描述
AutoField:一个自动递增的整型字段,添加记录时它会自动增长。AutoField字段通常只用于充当数据表的主键;如果在模型中没有指定主键字段,则Django会自动添加一个AutoField字段。
BigIntegerField:64位整型字段。
BinaryField:二进制那数据字段,只能通过bytes对其进行赋值。
BooleanField:布尔字段,相对应的HTML标签是<input type=”checkbox”>。
CharField:字符串字段,用于较短的字符串,相对应的HTML的标签是单行输入框<input type=”text”>
TextField:大容量文本字段,相对应的HTML标签是多行编辑框<textarea>
CommaSeparatedIntegerField:用于存放逗号分隔的整数值,相对于普通的CharField,它有特殊的表单数据验证要求
DateField:日期字段,相对应的HTML标签是<input type=”text”>、一个JavaScript日历和一个”Today”快捷按键。有下列额外的可选参数:auto_now,当对象被保存时,将该字段的值设置为当前时间;auto_now_add,当对象首次被创建时,将该字段的值设置为当前时间
DateTimeField:类似于DateField,但同时支持于时间的输入。
DurationField:存储时间周期,用python的timedelta类型构建。
EmailField:一个带有检查Email合法性的CharField
FileField:一个文件上传字段。在定义本字段时必须传入参数upload_to,用于保存上载文件的服务器文件系统的路径。这个路径必须包含strftime fromatting,该格式将上载文件的date/time替换
FilePathField:按目录限制规则选择文件,定义本字段时必须传入参数path,用以限定目录
FloatField:浮点型字段。定义本字段时必须传入参数max_digits 和decimal_places,用于定义总位数(不包括小数点和符号)和小数位数。
ImageField:类似于FileField,同时验证上传对象是否是一个合法图片。它有两个可选参数,即height_field和width_field,如果提供这个两个参数,则图片将按提供的高度和宽度规格保存。该字段要求安装Python Imaging库。
IntegerField:用于保存一个整数
IPAddressField:一个字符串形式的IP地址,比如”129.23.250.1″.
NullBooleanField:类似于BooleanField,但比其多一个None选项。
PhoneNumberField:带有美国风格的电话号码校验的CharField(格式为XXX-XXX-XXX)
PositiveIntegerField:只能输入非负数的IntegerField
SlugField:只包含字母、数字、下划线和连字符的输入字段。它通常用于URL
SmallIntegerField:类似于IntegerField,但只具有较小的输入范围,具体范围依赖于所使用的数据库。
TimeField:时间字段,类似于DateTimeField,但只能表达和输入时间
URLField:用于保存URL.
USStateField:美国州名的缩写字段,由连个字母组成。
XMLField:XML字符字段,是具有XML合法性验证的TextField

Django字段查询谓词表
exact Comment.objects.filter(id__exact=14 select * from Comment where id=14
iexact Comment.objects.filter(headline_iexact=’I like this’) select * from Comment Where upper(headline)=’I LIKE THIS’
contains Comment.objects.filter(headline_contains=”good” select * from Comment where headline like ‘%good%’
in Comment.objects.filter(id_in=[1,5,9]) select * from Comment where id in (1,5,9)
gt\gte\lt\lte Comment.objects.filter(n_visits_gt=30) select * from Comment where n_visits>30
startswith\endswith Comment.objects.filter(body_text_startswith=”Hello” select * from Comment where body_text like ‘Hello%’;
range start_date=datetime.date(2015,1,1) end_date=datetime.date(2015,2,1) Comment.objects.filter(pub_date__range(start_date,end_date) select * from Comment where pub_date between ‘2015-1-1’ and ‘2015-2-1’
year/month/day/week_day Comment.objects.filter(pub_date__year=2015) select * from Comment where pub_date between ‘2015-1-1 0:0:0’ and ‘2015-12-31 23:59:59’
isnull Comment.objects.filter(pub_date__isnull=True) select * from Comment where pub_date is NULL;

python-django

django-admin startproject webname:建立站点名为webname的django项目
manage.py:是django用于管理本项目的命令行工具,之后进行站点运行、数据库自动生成、静态文件收集等都要通过此文件完成
内层djangosite目录包含了本项目的实际文件,同时因为其中包含了__init__.py文件,所以该项目也是一个python包
djangosite/__init__.py:告诉python该项目是一个python包,其中暂无内容
djangosite/settings.py:django的项目配置文件。默认时,其中定义了本项目引用的django组件、django项目名等。在之后的开发中,还需要其中配置数据库参数、导入的其他python包等信息
djangosite/urls.py:维护项目的url路由映射,即定义客户端访问的url由哪一个python模块解释并提供反馈。在默认情况下,其中只定义了”/admin”及管理员
站点的解释器。
djangosite/wsgi.py:定义wsgi的接口信息,用于与其他web服务器集成,一般本文件在生成后无须启动

python manage.py startapp appname:在webname站点下建立appname的应用

__init__.py其中暂无内容,该文件的存在使得app成为一个python包。
admin.py管理站点模型的声明文件,默认为空。
apps.py应用信息定义文件。在其中生成了类AppConfig,该类用于定义应用名等Meta数据
migrations包:用于在之后定义引用迁移功能
models.py:添加模型层数据类的文件
tests.py:测试代码文件。
views.py:定义URL响应函数

python开发网络知识01

常用的HTTP头字段
字段名 方向 解释 可能的值
Accept Request 接收什么介质类型 type/sub-type */*表示任何类型,type/*表示该类型下的所有子类型
Accept-Charaset Request 接收的字符集 IOS-8859-1
Accept-Encoding Request 接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法 Gzip,deflate,UTF8
Accept-Language Request 接收的语言 En、cn
Accept-Ranges Request 服务器表明自己是否接受获取其某个实体的一部分(比如文件的一部分)的请求 bytes:表示接受 none:表示不接受
Age Response 用该头部表明该实体从产生到现在经过多长时间
Authorization Response 当客户端接收来自Web服务器的WWW-Authenticate响应时,该头部回应自己的身份验证信息给Web服务器 Username:password
Cache-Control Request 对服务器的缓存控制 no-cache:不要从缓存中去取,要求现在从Web服务器去取
Cache-Control Response 对客户端的缓存控制 public:可以用缓存内容回应任何用户。private:只能用缓存内容回应先前请求该内容的那个用户
Connection Request 对服务器的连接控制 Close:告诉web服务器在完成本次请求的响应后,断开连接,不要等待本次连接的后续请求了,Keepalive:连接保持,等待本次连接的后续请求
Connection Response 连接状态通知 Close:连接已关闭 Keepalive:连接保持,等待本次连接的后续请求
Etag Both 内容的唯一标识。客户端需要把服务器传来的ETag保留,在下次请求相同的URL时提交给服务器。服务器用Etag值判断同一个URL的内容是否有变化,如有变化则发送更新的内容给客户端
Expried Response web服务器表明该实体将在什么时候过期 YYYY-MM-DD HH:MM:SS
Host Request 客户端指定自己想访问的WEB服务器的域名,ip地址和端口号 ip:port
Location Response 访问的对象已经被移到别的位置了,应该到本头字段指向的地址获取 hhtp://mysit.com/another_url
Proxy-Authenticate Response 代理服务器响应浏览器,要求其提供代理身份验证信息
Proxy-Authenticate Request 提供自己在代理服务器中的身份信息 Username:password
range Request 需要获取对象的哪一部分内容 bytes=1024-:获取从第1024个字节到最后的内容
Referer Request 浏览器想web服务器表明自己是从哪个URL获得当前请求中的URL的 http://www.baidu.com
Server Response 指明服务器的软件类型及版本 Nginx/1.14
User-Agent Request 指明浏览器的软件类型及版本 Mozilla/x.x windows浏览器 Firefor/xx.x.x
Via Both 列出从客户端到服务器或者相反方向的响应

HTTP状态码
1xx:信息,表明服务器已经收到Request,但需要进一步处理,请客户端等待
2xx:成功
3xx:重定向;请求的地址已经被重定向,需要客户端重新发起请求
4xx:客户端错误,请求中提交的参数获内容有错误
5xx:服务端错误,服务器处理请求时出错,一般本类错误需要联系服务器管理员处理