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版本。