Loading

1、python基础


1.1、开发语言:

Python Java、PHP C# Go ruby C++... ===》 字节码

低级语言:C、汇编 ===》 机器码

1.2、语言之间的对比:

PHP类:适用于写网页,局限性

Python Java: 及可以写网页,也可以写后台功能

- Python执行效率低,开发效率高

- Java执行效率高, 开发效率低

1.3、Python种类:

JPython

IronPython

JavaScriptPython

RubyPython

CPython **********

...

pypy 这是用CPython开发的Python

1.4、执行操作:

写一个文件文件中按照python的规则写,将文件交给Python软件,读取文件中的内容,然后进行转换和执行,最终获取结果。

Python软件 ==> Python解释器(内存管理)

linux:解释器路径"#!/usr/bin/env python",如果指定python + <name>.py可以在python文件中不写,但是py文件需要加执行权限

python强制缩进用4个空格

1.5、编码

1、

(1)

ascill 8位 英文字母和数字各占一个字节;中文占一个字节。

gbk 16位 英文字母和数字各占一个字节;中文占2个字节。

unicode 至少16位 英文字母和数字各占2个字节;中文通常占2个字节,生僻字符需要用4个字节。

utf-8 能用多少表示就是用多少位表示 英文字母和数字各占1个字节;中文通常占3个字节,生僻字符需要用4-6个字节。

(2)

本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码

成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包

含大量英文字符,用UTF-8编码就能节省空间。

ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。

2、

(1)

python解释器会读取".py"文件的第一行内容,来决定以什么编码格式来读入内存,这一行就是来设定python解释器这个软件的编码使用

的编码格式,可以用sys.getdefaultencoding()查看,如果不在python文件指定头信息#-*-coding:utf-8-*-,那就使用默认的。

python3读取文件的默认编码格式为utf8。

python2读取文件的默认编码格式为ascii。

Python3 无需关注编码问题,Python2 每个文件中只要出现中文,头部必须加"#-*- coding:utf8 -*-"。

在内存中写的所有字符,一视同仁,都是unicode编码,比如我们打开编辑器,输入一个“你”,我们并不能说“你”就是一个汉字,此

时它仅仅只是一个符号,该符号可能很多国家都在使用,根据我们使用的输入法不同这个字的样式可能也不太一样。只有在我们往硬盘保存

或者基于网络传输时,才能确定”你“到底是一个汉字,还是一个日本字,这就是unicode转换成其他编码格式的过程了。

保证不乱吗的核心法则就是,字符按照什么标准而编码的,就要按照什么标准解码,此处的标准指的就是字符编码。

(2)

解码:存储在硬盘上的其它编码转换为内存中的UNICODE码。

编码:内存中的UNICODE码转换为其它编码存储到硬盘上。

所以,解码过后的文件可以转化为其它的编码格式。

(3)

在存入磁盘时,需要将unicode转成一种更为精准的格式,utf-8:全称Unicode Transformation Format,将数据量控制到最精简。

在读入内存时,需要将utf-8转成unicode,所以我们需要明确,内存中用unicode是为了兼容万国软件,即便是硬盘中有各国编码编写的

软件,unicode也有相对应的映射关系,但在现在的开发中,程序员普遍使用utf-8编码了,估计在将来的某一天等所有老的软件都淘汰掉了

情况下,就可以变成内存utf-8<->硬盘utf-8的形式了。

(4)出现乱码的问题:

1)存文件时不乱码而读文件时乱码:

存文件时用utf-8编码,保证兼容万国,不会乱码,而读文件时选择了错误的解码方式,比如gbk,则在读阶段发生乱码,读阶段发生乱码是

可以解决的,选对正确的解码方式就ok了。

2)存文件时就已经乱码:

存文件时,由于文件内有各个国家的文字,我们单以gbk去存,本质上其他国家的文字由于在gbk中没有找到对应关系而导致存储失败,但当

我们硬要存的时候,编辑器并不会报错,但毫无疑问,不能存而硬存,肯定是乱存了,即存文件阶段就已经发生乱码,而当我们用gbk打开文

件时,中文可以正常显示,而其它则乱码了。

由于编码格式和存储文件的编码格式不一致而导致的乱码,存储后无论怎么样改变存储文件的编码格式都无法改变乱码情况。

1.6、python编程目录规范:


1.7、补充1:开发中产品的各版本定义:

1、alpha:

Alpha是内部测试版,一般不向外部发布,会有很多Bug,除非你也是测试人员,否则不建议使用。是希腊字母的第一位,表示最初级的版本,

alpha 就是α,beta 就是β,alpha 版就是比 beta 还早的测试版,一般都是内部测试的版本。

2、beta:

该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一缺陷,需要经过多次测试来进一步消除。这个阶段的版本会一直加

入新的功能。

3、RC(Release Candidate):

Candidate 是候选人的意思,用在软件上就是候选版本。Release Candidate 就是发行候选版本。和 Beta 版最大的差别在于 Beta 阶段会一

直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错! RC 版本是最终发放给用户的最接近正式版的版本,发行

后改正 bug 就是正式版了,就是正式版之前的最后一个测试版。

4、GA(general availability):

比如:Apache Struts 2 GA 这是 Apache Struts 2 首次发行稳定的版本,GA 意味着 General Availability,也就是官方开始推荐广泛使用了。

5、Release:

该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标

准版。一般情况下,Release 不会以单词形式出现在软件封面上,取而代之的是符号(R)。


1.8、补充2:web页面中http返回的状态码解释:

1、状态码类别:

1xx:信息类,表示客户发送的请求服务端正在处理。

2xx:成功类,服务器成功接收请求。

3xx:重定向类,服务器中找到了多个请求内容,则需要用户再次操作选择。

4xx:客户端错误类,对于发的请求服务器无法处理。

5xx:服务器错误类,由于服务器发生故障或遇到错误无法回应。


2、常见的状态码:

(1)1xx 信息类:

100:继续发送请求,客户端之前发送的请求服务器未拒绝,服务器必须在客户端发送完请求后才能发送一个回应。

101:服务器接收客户请求,将其转化成另一种协议来处理。


 (2)2xx 成功类:

200:服务器成功处理请求。

202:服务器接受了客户端的请求,还在处理中

204:服务器处理了请求,但是没有新的内容生成,刷新页面后页面还是保持原来的,不会改变。

205:和204有点相似,也是服务器处理了请求,但是没有新的内容生成,但是刷新页面后浏览器会清除内容,重新显示内容。

206:客户端发送范围请求,服务器处理完成。


(3)3xx 重定向类:

301:永久重定向,例如:请求 https://localhost/index 时服务器返回301,就会给 url 末尾加个"/",则最终访问的url是 https://localhost/index/。

302:临时性重定向,和301说明类似。

304:客户端发送请求后,服务器允许访问,但是浏览器中缓存的内容还在有效期中,这时返回状态码为304。

307:http1.1 中新增将请求分为 get 和 post,他的重定向只对于 get 请求。


(4)4xx 客户端错误类:

400:请求的内容中存在语法错误。

401:说明访问的请求受保护,需要用户认证。

403:服务器接受客户端发出的请求,但是拒绝处理,例如访问服务器中有些未被授权的内容。

404:服务器找不到请求的内容。

405:用来访问本页面的 HTTP 位置不被允许(方法不被允许)。

407:需要代理身份才能进行访问,即客户端访问需要通过代理授权。

414:请求的url太长。


(5)5xx 服务器错误类:

500:服务器遇到了某些情况,处理请求失败。

502:bad gateway,网关错误,如果一直提示则可能是 ip 设置的时候网关地址错误,偶尔出现可能是网关的上一些错误。

503:服务器在维护或者负载过重不能处理客户端发出的请求。

505:服务器不支持请求中的http版本。

posted @ 2020-02-16 14:14  云起时。  阅读(218)  评论(0编辑  收藏  举报