前言
学习任何编程语言都很类似, 大概都需要从最基础知识学起, 再逐步通过做一些简单的小项目来提升自己. 上一篇中, 我们学习了 Python 的下载与安装以及编辑器 Vscode 的下载安装 (这些字也是用 Vscode 码的:D). 在后面的几篇中, 我将逐步学习 Python 的基础知识, 主要包括: 基本的数据类型、流程控制语句、函数以及类的学习. 大致学习完了这些内容后, 就马马虎虎算是入了 Python 的门了.
那么 Python 都有哪些基础数据类型呢? 在学习基本数据类型前先确立一个观念, 即在 Python 中「万物皆对象」. 因为不论是像基本数据类型, 还是我们后期将要学习的函数、类等概念, 都可以看成是对象. 就像在现实生活中, 一栋房子就可以看成是一个对象, 那么既然是对象, 其就有属性、特征等等属于这一对象所特有的. 房子有面积、价格等的特性; 又如宠物狗也有相应的特征, 如宠物狗的年龄, 种类等等. 这样的例子在生活中数不胜数. 借用现实生活中的例子, 我就可以理解 Python 中的「万物皆对象」了. 因为每种对象都有它的属性特征等等. 在下面的学习中, 会逐步体现出来这种特性.
基本数据类型
扯完了「万物皆对象」, 现在就正式开始学习一下 Python 的基本数据类型. 简单来讲, Python 的基础数据类型大致有: 数字(number)、字符串(string)、列表(list)、集合(set)、元组(tupple)、字典(dict). 下面逐次进行学习.
基本类型
再进一步细分, 上面提到的数据类型可以分为基本类型和容器类型. 其中整型、浮点数、布尔型等属于基本类型; 字符、元组、列表、字典、集合等属于容器类型. 至于为什么这样分, 后面学习将会让你明白这一点.
整型
顾名思义, 整型就是整数的意思. 我们可以看下面的示例:
myNumber = 4
# 打印 myNumber 以及 myNumber 的类型
print(f"my number is {myNumber} and it's type is", type(myNumber))
运行上述代码后, 我们可以得出这样一条输出:
my number is 4 and it's type is <class 'int'>
可以看到我们这里定义的 myNumber 的类型是 int(其实也是类). 前面说到 Python 中万物皆对象, 既然是这样, 那么整数也有其属性、方法等. 我们利用 dir() 函数来查看一下整数都有哪些属性和方法.
print(f"myNumber 的属性为:", dir(myNumber))
这里我么只挑几个方法和属性来看看. 例如在返回的方法和属性中, 我们能看到类似于
__abs__
__add__
等这样两边带有双下划线的东东, 这些是什么呢? 其实这些就是 myNumber 的方法, 这里比如我们用这里返回的第一和第二个方法试试.
# 使用第一个方法试试, __abs__ 方法会返回数字的绝对值
myNumber.__abs__()
# 再使用第二个方法试试, __add__ 方法会返回加上一个数后的结果, 比如这里我们加上 6 试试
myNumber.__add__(6)
程序将分别返回
4
10
结果正确! 除了返回了 abs 这样的方法外, 还返回了类似于 bit_length 这样的属性, 我们来看看.
# 查看 myNumber 的二进制长度
myNumber.bit_length
# myNumber.bit_length()
输出的结果为
<built-in method bit_length of int object at 0x00000000672680D0>
可以看到这是一种内置的方法. 此外还可以用 Python 自带的标准库 sys 来获取字节数长度.
# import our package
import sys
# get the size of myNumber
sys.getsizeof(myNumber)
这样得到的字节数为 28. 下面我们来看看浮点数.
浮点数
我们先来看看下面的例子:
myFloat = 4.0
print(f"the type of myFloat is {type(myFloat)}")
可以看到得出的结果为:
the type of myFloat is <class 'float'>
得到的类型是 float 无疑! 接下来要学习的就是布尔类型啦, 布尔类型的值就两种, 非真即假, 一般用 1 表示真, 用 0 表示假.
布尔类型
请看下面的简单例子:
T = Ture
F = False
print(T + 6)
print(F - 2)
这些都是简单的基本概念, 通常布尔类型用于条件判断.
容器类型
有了上面的基本类型还不够, 还需要容器类型的数据. 从名字上就能看出, 容器类型的数据就是用于盛放某些数据的.
字符
在接下来的入门学习中, 将会采用最简单的例子予以说明. 这样对编程零基础的同学非常友好.
# 给出字符
myString = "I am a string."
print(myString)
字符也有一些属性和方法, 例如分割字符串, 将字符串的首字母大写等等.
# 首字母大写
myString.capitalize()
# 分割
myString.split()
# 查找索引
myString.find('am')
# 替换
myString.replace('string', 'number')
元组
这一小节我们学习一下元组. 元组和列表类似, 但区别就是元组是不可变, 而列表是可变的. 请看下面的例子:
myTupple = ('I am s string', 66)
怎么样, 看完元组就知道为什么是容器类型的数据了吧, 因为可以盛放不同的数据类型. 注意元组不可更改, 但可以通过索引的方式来获取元组的元素. 和多数语言一样, Python 的索引也是从 0 开始的, 比如我们要获取元组的第一个元素就可以通过
myTupple[0]
进行获取.
列表
在形式上, 列表和元组的定义很类似, 只不过列表是用中括号进行定义的. 我们看下面的例子:
myList = ['I love Python but I am a beginner', 33]
# 可以通过索引的方式获取列表的元素, 也可以通过索引的方式替换元素, 增加元素则可以用 append() 方法
myList[0] = 'a new string'
myList.append('a new element')
print(myList)
字典
字典用于存放键值对型的数据. 请看下面的例子:
myDict = {'bookName':'Beauty of Mathematics', 'author':'Jun Wu'}
字典的索引稍微不用于元组以及列表的索引, 字典是通过键的方式获取字典元素, 例如我们要获取作者信息:
myDict['author']
集合
这里集合的概念和数学上集合的概念有点类似, 用于存放不重复的数据容器类型.
mySet = {'Python','MATLAB', 'R', 'C', 20, 20}
mySet
可以看到输出的结果少了一个 20. 和数字的四则运算类似, 集合也有交、并、差等的操作.
set1 = {'C', 'R', 'MATLAB', 20}
set2 = {'C', 'R', 'MATLAB', 30, 40}
# 交集
print(set1.intersection(set2))
print(set1 & set2)
# 并集
print(set1.union(set2))
print(set1 | set2)
# 差
print(set1.difference(set2))
print(set1 - set2)
# 对称差
print(set1.symmetric_difference(set2)) # 差去共同的部分
print(set1 ^ set2)
需要注意的是集合不能存储可变的对象.
小结
入门学习了基本的数据类型, 包括数字、字符、元组、列表、字典、集合等. 接下来将入门学习控制语句.