---恢复内容开始---

1、IPO结构

一个程序的最基本,也是最重要的结构,便是IPO结构。它由

Input→Process→Output

三个流程组成。一切的人机交互程序,都是自输入开始,输出为止。

2、对象的基本类型

什么叫做对象的基本类型?作为“面向对象”的语言,Python所有的数据都是一个个的对象。而一个对象应该具有三个东西:

一个身份、一个类型和一个值

因此,我们先从类型来理清楚,python中有哪些类型的对象来组成我们的程序。

数字:int,float,complex,bool

序列:str,list,tuple

集合:set

映射:dict

python 对象析构 python对象类型有哪些_元组

2.1 帮助函数

字符串对象应该是我们平时最为常见的对象之一。字符串对象在《达人迷》中被形象的称为“文字常量”,即一个想用就用,呼之即来的常量。但是身为一个常量,它是不可修改的。每一个常量在Python中都有一个固定储存的地址。我们可以通过以下指令来获取常量的地址:

1 #id()的使用

2 >>> id("Hello Python")3 2953861085040

类似的,当我们并不清楚一个对象的类型时,我们可以对这些对象进行“查水表”。

我喜欢叫这些帮助我们查询获取各种信息的函数叫做“帮助函数”。常用的帮助函数有:

dir( )、help( )、type( )、id( )

1 >>>dir(math)2 ['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']3 >>>help(math.sin)4 Help on built-in function sin in module math:5 sin(x, /)6 Return the sine of x (measured in radians).7 >>>id(math)8 2953858855064

9 >>> type(2)10

11 >>>type(int)12

python 对象析构 python对象类型有哪些_python 对象析构_02

图:PYTHON语言的数据类型

那么,就从对象类型的分类开始吧!我们先来谈谈有哪些种类。

2.2 数字类型 Numbers

python 对象析构 python对象类型有哪些_python 对象析构_03

数学中,我们通常称为一个数域它是属于复数域的。但是在Python中,复数域和浮点数被区分的明明白白。

准确的说,实数中包含了整数与含有小数点的数(注意,含有小数点即为浮点数),故int和float属于实数类型。而复数用单独的complex(实数,虚数)来表示,注意它在计算时会自动给你加上i,所以描写成complex(1,2i)的形式是函数错误的使用方式。

布尔值只含有0或1,即false和true。这个在我的世界红石系统里面,用红石的开与关可以模拟布尔值。

2.3 序列类型 Sequences

python 对象析构 python对象类型有哪些_python对象分类_04

序列分为三类:字符串、元组和列表。元组是我最为陌生的一个称呼,所以我百度了元组的由来。

——“元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。 在二维表里,元组也称为行。”

通俗的来讲,假如这里有一个表格:

python 对象析构 python对象类型有哪些_python 对象析构_05

那么,(1,小刘)就是这张表格中的元组之一。ID1,对应着小刘,即表示了两个变量之间的对应关系。可是,如果这个表是三维的呢?我们不难想象,对于三维表格,假如我们固定其中的一个变量,那么剩下的表格就是相对于三位表格的元组。

序列的可修改性

人们通常认为我们是电脑的使用者,便能自由的控制序列该填入那些东西。是的,作为程序设计者,当然可以自由的修改序列,但对于程序的使用者来说呢?

因此,设计一个不可修改的序列是有必要的。为了防止程序被使用者有意无意地修改其中的数据,从而导致程序功能异常,序列是有其可修改性的。通过观察上一张图片,我们不难知道目前我们唯一可修改的序列叫做List。List,中文名又叫“列表”,是所有序列想要修改的必经之处。假如我们想要修改字符串和元组,那么我们就可以巧妙地将他们转化为序列,然后通过修改序列的方式间接修改字符串和元组。

python 对象析构 python对象类型有哪些_python对象分类_06

但是,当字符串使用如上操作时,会出现意想不到的bug。

1 >>> str_="I love this doctor!"

2 >>>list(str_)3 ['I', ' ', 'l', 'o', 'v', 'e', ' ', 't', 'h', 'i', 's', ' ', 'd', 'o', 'c', 't', 'o', 'r', '!']4 >>>str_5 'I love this doctor!' #这段代码说明,仅仅使用list()函数而不赋值是不会修改原对象的类型的

6 >>> str_=list(str_)7 >>>str_8 ['I', ' ', 'l', 'o', 'v', 'e', ' ', 't', 'h', 'i', 's', ' ', 'd', 'o', 'c', 't', 'o', 'r', '!']9 >>>str(str_)10 "['I', ' ', 'l', 'o', 'v', 'e', ' ', 't', 'h', 'i', 's', ' ', 'd', 'o', 'c', 't', 'o', 'r', '!']"

11 #发现了吗?原本想要输出'I love this doctor!' ,实际上却输出了"['I', ' ', 'l', 'o', 'v', 'e', ' ', 't', 'h', 'i', 's', ' ', 'd', 'o', 'c', 't', 'o', 'r', '!']" 。

这个故事告诉我们,不要想当然地面对一切事物。只有通过实践才能出真知,一切联想和类比都只能是猜测。

那么,究竟用什么办法才能输出它原本对应的字符串呢?

我们下回分解!