该笔记适用于《北京千峰Python教程(孙长凯sunck 2017.04版)》。
注释中“01-12. 面向对象提升与收发邮件04”代表第1章第12节(天)的第04课。

1.1 什么是Python?

01-01. python概述

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。
Python由Guidovan Rossum于1989年底发明,第一个公开发行版发行于1991年。
像PerI语言一样,Python源代码同样遵循GPL(GNU General Public License)协议。

  • Python是一种解释型语言
    开发过程中没有了编译这个环节,类似于PHP和PerI语言。
  • Python是交互式语言
    可以在一个Python提示符,直接互动执行程序。
  • Python是面向对象语言
    Python支持面向对象的风格或代码封装在对象的编程技术。
  • Python是初学者的语言
    Python对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理 WWW浏览器再到游戏。

发展历史

Python是由GuidovanRossum在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。
Python本身也是由诸多其他语言发展而来的,这包括ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell和其他的脚本语言等等。
现在Python是由一个核心开发团队在维护,Guido van Rossum仍然占据着至关重要的作用,指导其进展。

特点

  • 易于学习
    Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
  • 易于阅读
    Python代码定义的更清晰。
  • 易于维护
    Python的成功在于它的源代码是相当容易维护的。
  • 一个广泛的标准库
    Python的最大的优势之一是丰富的库,跨平台的,在UNIX、Windows和Macintosh兼容很好。
  • 互动模式
    互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片段。
  • 可移植
    基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
  • 可扩展
    如果需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
  • 数据库
    Python提供所有主要的商业数据库的接口。
  • GUI编程
    Python支持GUI可以创建和移植到许多系统调用。
  • 可嵌入
    你可以将Python嵌入到C/C++程序,让你的程序的用户获得“脚本化”的能力。

缺点

  • 运行速度慢
    和C程序相比非常慢,因为Python是解释型语言,代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。
  • 代码不能加密
    如果要发布Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的。所以,凡是编译型的语言,都没有这个问题(不需要把源代码发布出去),而解释型的语言,则必须把源码发布出去。

1.2 python安装

因为Python是跨平台的,它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序,放到Linux上也是能够运行的。
目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的,3.x版越来越普及。

1.3 数据的存储

01-02~04

1.3.1 内存

  1. 概述

内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。
内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。

抽象:一个开关,有两种状态,开启和关闭。一种状态对应1,另一种状态对应0。把八个开关放到一间房间里,这个房间称为“一个字节”,一个开关代表“一位”。每个房间都有门牌号,看做“地址”。把无数个房间堆叠起来组成摩天大厦,可以把摩天大厦看成“内存”。

  1. 单位

1bit
8bit——1字节
1024字节 ——1K
1024K ——1M
1024M——1G
1024G——1T

内存中以二进制形式存储数据。

1.3.2 进制

  1. 二进制

0 1 逢二进一

0 + 0 = 0
0 + 1 = 1
1 + 1 = 10
11 + 1 = 11

  1. 八进制

0 1 2 3 4 5 6 7 逢八进一
1 + 7 = 10
1 + 2 = 3

  1. 十进制

0 1 2 3 4 5 6 7 8 9 逢十进一

  1. 十六进制

0 1 2 3 4 5 6 7 8 9 a b c d e f 逢十六进一
1 + f = 10

内存地址用十六进制数表示。

1.3.3 进制转换

  1. 十进制→二进制

倒除法,余数逆序。

10(10)→1010(2)。

  1. 二进制→十进制

当前的数字,乘以2的位数次方,最后相加。
0x2^0 + 1x2^1 + 0x2^2 + 1x2^3 = 0 + 2 + 0 + 8 = 10。

1010(2)→10(10)。

  1. 八进制→二进制

【一转三位】八进制的一位相当于二进制的三位,转换时按照十进制转换
65(8)→110101(2)。

  1. 十六进制→二进制

【一转四位】十六进制的一位相当于二进制的四位,转换时按照十进制转换
a4(16)→10100100(2)。

  1. 二进制→八进制

【三位一取】从低位开始取,高位不够补0。
110101(2)→65(8)。

  1. 二进制→十六进制

【四位一取】从低位开始取,高位不够补0。
10(10)→1010(2)。

十进制 二进制 八进制 十六进制
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 a
11 1011 13 b
12 1100 14 c
13 1101 15 d
14 1110 16 e
15 1111 17 f

1.3.4 数据存储

01-05. 原码&补码&反码

计算机存储数据,先开辟内存空间,再存储数据。计算机开辟内存的最小单位是字节。在存储数据时,用最高位标识符号,1表示负数,0表示正数。

  • 原码
    规定了字节数,写明了符号位,就得到了数据的原码

00000000000000000000000000000001
10000000000000000000000000000001
——————————————————
10000000000000000000000000000010

  • 反码
    正数的反码是其原码,负数的反码是其原码的符号位不动,其他位取反

00000000000000000000000000000001
11111111111111111111111111111110
——————————————————
11111111111111111111111111111111

  • 补码
    正数的补码是其原码,负数的补码是其反码加1

00000000000000000000000000000001
11111111111111111111111111111111
——————————————————
100000000000000000000000000000000

  • 结论
    计算机以补码的形式存储数据。