一、基础语法
1.1、字符编码
编码是信息从一种形式转变成另外一种形式的过程。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。解码,是编码的逆过程。
在计算机编程中,编码是指用代码来表示各种数据,使其成为可利用计算机进行处理和分析的信息。
代码是用来表示事物的记号,它可以用数字、字母、特殊的符号或它们之间的组合来表示。
将数据转换为代码或编码字符,并能译为原数据形式,是计算机书写指令的过程,是程序设计中的一部分。
因为计算机被设计以二进制形式存储数据(0和1对应电路里的低和高电平),如果要处理文本,就必须先把文本按照某一标准转换成数码后为才能处理。其转化过程中的标准就是预先规定的编码表。比较常用的有ASCII、GB2312、GBK、Unicode、UTF-8 。
由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)编码。
随着计算机的普及,遇到了使用表意字符而非字母语言的中、日、韩等国家。在这些国家使用的语言中常用字符多达几千个,而原来字符采用的是单字节编码,对于使用表意字符的语言是在无能为力,因此不同国家都定制自己的标准。
比如处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码(《信息交换用汉字编码字符集》是由中国国家标准总局1980年发布,1981年5月1日开始实施的一套国家标准,标准号是GB 2312—1980。GB2312编码适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312)。
GB 2312的出现,基本满足了汉字的计算机处理需要,但对于人名、古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来制定《汉字编码扩展规范》GBK。
不难想象,不同的标准放在一起,就会混乱,甚至导致计算机根本不能识别,这就是为什么经常会出现乱码的现象。
所以人们在不断寻找这更好的字符编码方案,最后的结果就是Unicode诞生了。
Unicode组织的想法最初也很简单:创建一个足够全的编码,将所有国家的编码都加进来,进行统一标准。
Unicode其实对每个字符都固定使用两个字节即16位表示。
没错,这样乱码问题就这样解决了。但新的问题又出现了:如果你的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。
UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。所以
1.2、注释
1.3、缩进
很多编程语言都用大括号来表示循环、条件等的作用域,在Python中,只需要用适当的缩进来表示即可。如果在正确的位置输入冒号(:),IDLE会再下一行自动缩进。
1.4、变量
在使用变量之前,不需要申明类型,可以直接对其赋值。
二、数据类型
2.1、整型
整型表示整数。Python3的整型已经和长整型进行了无缝整合,类似Java的BigInteger类型,它的长度不受限制。如果非要有个限制,那只限于计算机的虚拟内存总数。所以用python3很容易进行大数计算。
2.2、浮点型
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的。
2.3、布尔类型
布尔类型事实上是特殊的整型,尽管布尔类型用True和False来表示“真”和“假”,但是布尔值可以当作整数来对待,True相当于1,Flase相当于0。
2.4、字符串
字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"xyz"等等。
Notes
-
引号''或""本身只是一种表示方式,不是字符串的一部分。
-
字符串不能以反斜杠作为结尾,因为反斜杠放在字符串结尾表示该字符串还没结束,换行继续的意思。
-
Python还允许用r''表示''内部的字符串默认不转义。
-
如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用三重引号字符串('''内容''')的格式表示多行内容,比如
三、数据结构
3.1、列表
类似Java中的数组。但是数组有一个基本的要求是元素的数据类型必须一致,而Python中的列表没有这要求。
3.2、元组
元组和列表最大的区别是你可以任意修改列表中的元素,可以插入或者删除一个元素,但是元组不行,元组是不可改变的
3.3、字符串
四、常用操作符
4.1、算术操作符
+ - * / % ** //
Notes
-
即使是整数间的除法,答案自动返回一个浮点型的精确数值。
-
幂运算操作符比其左侧的一元操作符优先级高,比其右侧的一元操作符优先级低
4.2、比较操作符
< <= > >= == !=
4.3、逻辑操作符
and or not
五、异常处理
5.1、try-except
5.2、try-finally