目录:
第一部分:python简介
第二部分:编码初解
第一部分:python简介
1.1 python特点简介
python语言是一种称得上既简单又功能强大的编程语言,注重的能够解决问题,而不是繁琐的语法和数据结构。
1.2 特点:
简单易学,功能强大的编程语言;
高效率的高层数据结构;
简单而有效地实现了面向对象编程;
简洁的语法和对动态输入的支持;
特别适用于快速的应用程序开发;
免费开源;
移植性很好;
类库强大;
1.3 python类别
python类别 Cpython、Jpython、Ironpython
为什么会有jpython和ironpython呢?
为了和java、net更好的调用。只要不用第三方扩展写出来的代码,python的代码,就可以各个平台无缝移植。
1.4 如何执行Python
执行的平台:windows、Linux、mac
交互模式:每一行代码执行后,均输出结果
文件模式:代码写在文件中,然后执行
常用的编辑器:Eclipse+pydev、Pycharm、Sublime、notepad++、写字板
第二部分:编码初解
2.1 了解编码
GB2312编码
适用于汉字处理、汉字通信等系统之间的信息交换
ANSI
与你使用的windows操作系统的语言有关系的,像windows简体中文版就是GBK(用一个字节表示英文,用两个字节表示一个中文)
UTF-8
是Unicode Transformation Format-8 bit的缩写,UTF-8是Unicode的一种实现方式。它是可变长的编码方式,可以使用1~4个字节表示一个字符,可根据不同的符号而根据不同的符号而变化字节长度。
ASCII编码
美国信息交换标准代码(American standard Code for Information Interchange,简称ASCII)是一种用于信息交换的美国标准代码。它的作用是给英文字母、数字、标点、字符转换成计算机能识别的二进制数规定了一个大家都认可并遵守的标准。
GBK编码
是汉字编码标准之一,是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码。
Unicode编码
这是一种世界上所有字符的编码,但是它没有规定的存储方式。Unicode标准也在不断发展,但是常用的是用两个字节表示一个字符。
2.2 了解编码 UTF-8、UTF-16、UTF-32的一些区别
utf编码方式的设计初衷主要就是节省,utf8因为兼容ascii,可以使用一个字节表示英语世界常用字符,比较省空间和宽带。utf8是变长的字符串。
utf16因为使用两个字节为单位,所以分大尾和小尾。即utf16be和utf16le.很多人其实并不知道utf16有两种。
对于编程来说,最友好的编码是utf32.由于utf32表示任何字符都用4字节,读到内存中是个均匀的整型数字。于是我们可以很方便地随机访问任何一个字符。其他方式则不允许这么操作,utf-8是变长地,无法使用随机访问地方式读取。
最理想地文字处理方式是用utf8存储和传输,程序读到内存里转为utf32处理。
位:计算机基本的存储单位
字节:1字节=8位
2.3 python代码的中文问题
python2.7版本
需要专门考虑中文字符的输出问题,字符串无法完全地支持国际字符集和Unicode编码,因为python2中普通字符串实际上就是已经编码(非Unicode)的字节字符串,即str类型,转化为unicode需要进行解码。
python3版本。
所有的字符串默认已经是Unicode编码了,即unicode类型。如果你想使用非Unicode字符串,需要对字符串内容再做编码(encode),编码为你需要的编码格式。编码地类型为bytes类型
2.4 字符串与编码
字节字符串:bytes类型,被encode后的字符串类型。
Unicode字符串:默认类型,或者被字节字符串decode后的类型
#创建一个Unicode字符串
byteString="hello Unicode world!"
print type(byteString)
#创建一个字节字符串
unicodeString = "hello world!".encode("gbk")
print (type(unicodeString))
2.5 文件存储和读取的编码
1.在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码 (Unicode,这是一种世界上所有字符的编码,但是它没有规定的存储方式)
2.用记事本编辑的时候,从文件读取的UTF-8字符被转换成为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。
3.浏览网页:
3.1 浏览网页的时候,服务器会把动态生成的Unicode内容转换成UTF-8再传输到浏览器.
3.2 很多网页的源码会有类似<meta charset="UTF-8"/>的信息,表示该网页正是用的UTF-8编码。
2.6 字符转换的过程
UTF-8/GBK(decode 编码)-->Unicode-->(encode 解码)UTF-8/GBK
3.编码转换
3.1 代码中字符串的默认是unicode。
3.2 所以要做一些编码转换,通常是要将Unicode转换为对应的字节字符串,即从Unicode编码(encode)成另一种编码。unicode -->encode("utf-8")
3.3 decode作用是将其他编码的字符串转换成Unicode编码
例如:name.decode("GB2312"),表示将GB2312编码的字符串name转换成Unicode编码
3.4 encode的作用是将Unicode编码转换成其他编码的字符串。
3.5 进行编码转换的时候必须先知道name是哪种编码,然后decode成Unicode编码,最后再encode成需要编码
3.6 name已经就是Unicode编码,那么就不需要进行decode编码转换了,直接用encode就可以解码成你所需要的编码。
3.7 Python 内部的字符串一般都是Unicode编码或者字节字符串。
3.7.1 代码中字符串的默认编码与代码文件本身的编码是一致的。
3.7.2 所以要做一些编码转换通常是要以Unicode作为中间编码进行转换的,即先将其他编码的字符串解码(decode)成Unicode,再从Unicode编码(encode)成另一种编码。
GBK存储的字符—>decode("GBK")—>Unicode-->encode("utf-8")
2.1 decode作用,是将其他编码的字符串转换成Unicode编码。
2.2 encode作用,是将Unicode编码转换成其他编码的字符串。
3.对中文Unicode字符decode会报错
4.字节字符串和Unicode的字符串的互转
>>> s="byte string"
>>> print type(s)
<type 'str'>
>>> u=s.decode()
>>> print type(u)
<type 'unicode'>
>>> backToBytes = u.encode()
>>> print type(backToBytes)
<type 'str'>
5.文件中3种编码的互转
(1)在UTF-8文件中,则这个字符串就是UTF-8编码的,它的编码取决于当前的文本编码
(2)GB2312文本的编码就是GB2312
(3)在同一个文本中进行两种编码的输出等操作就必须进行编码的转换。
6.如何判断是否是字符串
basestring是str和unicode的超类(父类),也是抽象类,因为不能被调用和实例化,但可以被用来判断一个对象是否为str或者unicode的实例,isinstance(obj,basestring)=isinstance(obj,(str, unicode))
7.如何判断是否是Unicode
Is instance(s, unicode)
判断s字符串是否为Unicode,如果是返回True,不是的话返回False
第三部分:python基础
1.dir和help命令
help('print')
dir(math)
2. 数据类型和常量
常量:常量是指一旦初始化后就不能修改的固定值。
python3中有4中类型的数--整数、布尔类型、浮点数和复数。
逻辑值、与或非。
and:只要有一个false,整个表达式为false
or: 只要有一个true,整个表达式为true
not:表达式的相反值
3.变量&变量的命名规则
变量就是可以改变的量。
变量是存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。
根据一个变量的数据类型,解释器分配内容,并决定什么数据可以被存储在内存中。因此,通过分配不同的数据类型的变量,你可以存储整数、小数或字符在这些变量中。
Python中的变量不需要提前声明,变量的赋值操作既是变量的声明也是变量的定义过程。
每个变量在内存中创建,都包括变量的标识、名称和数据这些信息。
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建
4.变量命名规则
python中标识符由字母、数字、下划线组成
不能以数字开头
标识符名称的其他部分可以由字母(大写或小写)、下划线(‘——’)或数字(0-9)组成
不可以使用关键字,但是可以包含关键字
标识符区分大小写,例如:hisname和hisName不是一个标识符。注意前者中的小写n和后者中的大写N。
以下划线开头的标识符是有特殊意义的。以单下滑线开头的标识不能直接访问的实例属性(如_foo)
以双下划线开头的表示类的私有成员(__foo)
以双下划线开头和结尾表示特使访法专用标识符,如_init_()代替类的构造函数
“单下划线” 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量
“双下划线” 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。
5.数据类型和变量
数据类型
Numbers --数字
String --字符串
List --列表
Tuple --元组
Dictionary --字典
Set --集合
变量赋值
a=b=c=1
a,b,c=1,2,'three'
变量特性
python变量相当于一个标签,这个标签指向内存中存放的值。当我们给变量重新赋值时,变量标签所指向的地址就会改变,查看变量指向的地址可以通过id()函数来实现。
a=12
print ("a变量的内存地址:",id(a))
a=23
print ("修改a变量的值后的内存地址:",id(a))
对象
python把在程序中用到的任何东西都称为对象。程序中的每个东西包括数、字符串甚至函数都是对象。python是极其完全地面向对象的
python的代码块
python程序由代码块构成;
代码块由语句构成;
语句由表达式、注释构成;
语句包括顺序语句、条件语句、循环语句、定义语句;
表达式由变量、运算符、常量构成;
Python基础 物理行、逻辑行和多行
物理行:文件中的一行
逻辑行:是Python可执行的单个语句
Python基础 缩进
行首的空白是重要的,
网友评论