Python从入门到放弃(二):核心数据类型

Ⅰ.入门

一.一些概念

1.Python中,数据是以对象的形式出现的。 
2.对象无非是内存中的一部分,包含数值和相关操作的集合。(其实就和传统的面向对象的说法或者说是特点是一样的)Python程序中处理的每一样东西都是对象。(像函数,模块和类这样的编程单元在python中也是对象,可能有些人暂时不理解,后面深入之后会更加理解) 
3.运行的表达式的语法决定了创建和使用的对象的类型(那些对象生成表达式就是这些类型起源的地方) 
5.python自动跟踪类型而不要求声明代码(python是动态类型(不要声明代码)和强类型(只能对一个对象进行适合该 类型的操作),一旦创建了一个对象,他就和操作集合绑定了.通俗来说,就是不想C++一样需要int啊double啊这些来告诉编译器变量类型) 
1.python变量并不要提前声明 
2.使用变量的值之前必须对其赋值。 
6.python中基本数据类型(下图) 
这里写图片描述

二.关于动态类型

1.概念

1.前面的基本概念中已经讲到,在python中,类型是在运行过程中自动决定的,不用通过代码声明. 
2.一个变量,当代码第一次给他赋值时就创建了他.一个变量可以引用任意类型的对象.(即,变量在赋值的时候才被创建,可以引用任何类型的对象,且必须在引用之前赋值。),怎么理解这段话呢? 
这里写图片描述 
上面很简单的代码传递了两个信息,一个是并不要像C++那样声明类型便能够赋值,第二个就是a能够引用其他的对象.上例中的a之前引用的是一个数字对象4,后面有5了,就跟5私奔了.因此我们可以这里说,类型是对象的类型,而不是变量的类型. 
3.每一个对象有两个标准的头部信息: 
1.类型标识符:用来标志这个对象的类型(类型存在于对象中) 
2.引用计数器:用来决定是否收回这个对象(对象回收)

2.共享引用

这里写图片描述 
这里写图片描述 
这里举一个例子来说明共享应用和原处修改的易混点: 
方式(一):非原处修改 
这里写图片描述 
这是因为l1引到了不同的对象,l1指向了不同的地方 
方式(二):原处修改 
这里写图片描述 
结论:

1.每次重新赋给一个变量新的值,那么这个变量就指到了新的地方.
2.但是这个变量指向的对象原地修改得话(如果能够),那么对于原地修改所做的操作就不会指到新的地方.那么,这个的改变会影响到另外一个也指向这个对象的变量.
  • 1
  • 2

方式(三):拷贝 
有时候我们需要一种避免原处修改波及到其他引用的方法,那就是copy 
这里写图片描述 
或者copy调用:方式为

import copy
x=copy.copy(Y)
或
x=copy.deepcopy(Y)
  • 1
  • 2
  • 3
  • 4

3.共享引用和相等判断

在这里更多的是讨论两种判断相等的机制 
1.”==”操作符 
用作值相等的测试,只要值是一模一样的就行.

2.“is”操作符 
检查对象的同一性.就是检查是否为同一个对象(相同的值,相同的内存等等等等) 
这里写图片描述 
这里写图片描述

三.数字

1.概念

1.包括:整数,浮点数,复数,固定精度的十进制数,带分子和分母的有理分数,集合. 
2.支持一般的数学运算:加号(+)代表加法,星号()代表乘法,双星号(*)代表乘方 
这里写图片描述

2.基本的数字常量

这里写图片描述 
至此,数字类型的基本就到这里,已经能够使用数字做一些基本的计算了.

四.字符串

1.作为序列的操作

字符串本质是一种序列类型,要记住 
1.索引 
这里写图片描述 
2.分片 
这里写图片描述 
3.合并 
这里写图片描述

2.不可变性

不可变性是指,你不能够通过操作原始字符串就真的在原地改变了字符串.但是,可以通过重新赋值的方法来改变字符串. 
这里写图片描述

3.类型特定的方法(字符串方法)

1.字符串是序列,所以前面提到了字符串的一些序列通用的操作,但是字符串既然是一个对象,就有自己类型特定的方法 
2.尽管序列操作是通用的,但是方法不是通用的, 
3.一条规则:可以作用于多种类型的通用型操作都是以内置方法或者是表达式的形式出现的.但是类型特定的操作都是以方法调用的形式出现的. 
以replace函数为例,当然还有很多其他的函数 
这里写图片描述 
Replace函数,前面的哪个参数是待被替换的字符串,后面那个是替换它的字符串. 
这里写图片描述 
不管这些函数怎么用,都不会改变原来的字符串,因为字符串是不可变的.

4.关于更多的方法

一个对象更多的方法一般我们可以用dir函数和help函数来得到.(或者有些IDE能够提供) 
这里写图片描述

五:列表

1.概念

1.Python的列表对象是这个语言提供的最通用的序列. 
2.列表是一个任意类型的对象的位置相关的有序集合,且没有固定大小 
3.其大小是可以变的.

2.序列操作

这里写图片描述 
序列操作并不会改变序列中的内容. 
注意:即使列表的大小是可变的,但是依然不允许访问列表中最大索引之外的元素.这时候系统的处理并不会直接加大列表,而是会直接报错.

3.类型特定的操作(即列表函数)

以一些常见的为例(其他的可以通过dir函数或者python提供的手册自己查到函数及其用法) 
这里写图片描述

4.嵌套

支持任意的嵌套,能够以任意的组合对其进行嵌套,并可以以多个层次进行嵌套.常见而简单的嵌套就是实现多维数组. 
这里写图片描述

六:字典

1.概念

1.字典不是一种序列,而是一种映射 
2.映射是一个其他对象的集合,他们是通过键而不是相对位置来存储的
3.没有所谓的顺序性 
4.是Python核心对象集合中唯一的一种映射类型. 
5.也具有可变性.

2.映射操作

1.字典用大括号({ })括起来. 
2.可以直接创建一个字典,也可以创建一个空字典,然后每次用一个键来创建. 
3.字典中的元素一定包括了键和值 
这里写图片描述 
这里写图片描述

3.重访嵌套

嵌套就是字典中套字典,套列表,套whatever 
这里写图片描述 
这里写图片描述 
其他的之后讲

六:元组

1.概念

1.可以看做是不可改变的列表. 
2.具有不可变性,和字符串类似 
3.同样支持任意类型的嵌套 
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_38213431/article/details/80877090