[Python]数据类型、常量、变量和运算符(未完待续)
标识符
一个ASCII标识符需要同时满足以下三个条件:
1、第一个字符必须是字母表中的字母或者下划线_
2、标识符的其他部分由字母、数字、下划线组成
3、标识符对大小写是敏感的,即A与a是不同的
一般来说ASCII标识符是用来给变量命名的。
Python保留字
Python保留字指的是Python中的关键字,意思是这些词有特殊的意思和用途,不能拿来当做ASCII标识符,也就是说不能拿来作变量的名字。
在Python的标准库中可以查询到所有的关键字:
>>> import keyword >>> keyword.kwlist ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
数据类型
为了方便处理不同的数据(比如数字、文本、图像等等),我们需要不同的数据类型。Python3中有六个标准的数据类型:
1、Number(数字)
2、String(字符串)
3、List(列表)
4、Tuple(元组)
5、Set(集合)
6、Dictionary(字典)
这六个标准的数据类型能够直接被Python处理,它们可以分为两大类:
1、不可变数据类型:Number(数字)、String(字符串)、Tuple(元组)
2、可变数据类型:List(列表)、Set(集合)、Dictionary(字典)
下面将具体介绍这六种标准数据类型,并说明什么叫做可变、不可变。
Number(数字)
数字,能想到就是我们熟悉的诸如2、3.1415926等数字。在Python3中,Number(数字)这个标准数据类型又被分为四种小类型:int、float、bool、complex。
int(整型)
指的是整数类型,比如2,100,-8等等。
由于计算机使用的是二进制,所以用十六进制表示整数是很常见的,在Python中十六进制用0x前缀和0-9以及a-f表示,比如0xff00。
float(浮点型)
指的是浮点数,也就是小数。
浮点数有两种写法,一是数学写法,比如3.1415926,-95.488等等;二是科学计数法(广义的),用e来代替10,比如1.23*10^9就可以写作1.23e9或者12.3e8。对于很大和很小的浮点数必须使用科学计数法。
bool(布尔型)
布尔型只有两个可能的取值,True和False。
布尔型数据之间的运算称为逻辑运算,布尔型数据之间的运算符称为逻辑运算符,一共有三种:and(与)、or(或)、not(非)。and(与)和or(或)是二元运算符,not(非)是一元运算符,真值表如下:
and(与) | True | False |
True | True | False |
False | False | False |
or(或) | True | False |
True | True | True |
False | True | False |
not(非) | 运算结果 |
True | False |
False | True |
事实上,True的取值为1,False的取值为0,是可以与数字进行计算的。但布尔型的数据存在的主要价值并不是拿来做数字运算,而是做逻辑运算,所以通常情况下我们不会将布尔型与其他数字类型混在一起运算。
complex(复型)
指的是复数,在Python3中复数有两种表示法,一是复数单位用j表示,形式是“a+bj”,比如1.5+6.8j;二是用complex(a,b)表示,比如complex(1.5,6.8)。
String(字符串)
Python中单引号与双引号的被认为是等价的,即'zyy'与"zyy"是完全一样的,都是字符串。需要注意的是,引号必须正确配对,单引号、双引号不能混用。并且,要注意这里的引号都是英文字符。
一个字符串中的每个位置(或者说每个字符)可以由索引来访问,索引值从0开始,格式为[索引值],比如
>>> str = 'The quick brown fox jumps over a lazy dog.' >>> str[0] 'T' >>> str[4] 'q' >>> str[29] 'r'
要想访问字符串中的一个子段,同样由索引来访问,格式为[起始索引值:终止索引值+1],注意这里的冒号是英文字符。比如:
>>> str = 'The quick brown fox jumps over a lazy dog.' >>> str[4:19] 'quick brown fox'
索引值一般来说是从0到字符串的长度-1,但也可以用-1表示倒数第一位,用-2表示倒数第二位,以此类推。实际上这种访问方式叫做切片,详细请移步:(挖坑)
String(字符串)作为一个数据类型也是可以进行运算的。
字符串1+字符串2将得到一个新的字符串,是由之前的两个字符串连接而成,比如
>>> 'zyy'+'是一只超级大沙茶' 'zyy是一只超级大沙茶'
字符串*整数将得到一个新的字符串,是之前的字符串复制这个整数次后连接而成,比如
>>> '哈'*13 '哈哈哈哈哈哈哈哈哈哈哈哈哈'
字符串还有一个问题是字符串的格式化。我们经常会需要输出某个具有固定格式的字符串,比如'尊敬的旅客您好!我们抱歉地通知,由于恶劣天气原因,您所乘坐的xxxxx航班已取消。请您尽快到xxx柜台办理改签或退票手续。'这里的xx处的内容都是变化的,而其余的都是固定的,于是我们希望使用一种简便的方法来使得每次都只需要考虑变化的部分。这就是字符串的格式化。
为了实现字符串的格式化,一共有两种方法。一种是利用占位符,另一种是利用字符串的format()函数。
对于第一种方法,需要先了解一下占位符。常见的占位符如下:
占位符 | 替换内容 |
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
在格式化的字符串中需要替换的位置使用占位符,在后面依次填上替换的内容即可。格式为:格式化字符串 % 替换的内容。比如:
>>> 'My name is %s' % 'zyy' 'My name is zyy' >>> 'the price of %s is $%f' % ('shirt', 49.9) 'the price of shirt is $49.900000'
对于数字的占位符来说,还有控制长度和补0的用法,比如:
>>> print('%2d - %02d' % (3, 1)) 3 - 01 >>> print('%.2f' % 3.1415926) 3.14
还有更多的一些用法可以百度,一般记住这几个常用的就足够了。
另一种格式化字符串的方法需要用到字符串的format()函数,在格式化的字符串中需要替换的位置使用{n}或{n:格式控制}来占位,其中n从0开始编号,在format()函数中传入需要替换的内容。格式为:格式化字符串.format(替换的内容)。比如:
>>> 'My name is {0}'.format('zyy') 'My name is zyy' >>> 'the price of {0} is ${1:.2f}'.format('shirt', 49.9) 'the price of shirt is $49.90'
List(列表)
List(列表)是一堆数据按顺序放在一起构成的一个数据类型,将数据用一对[]括起来,数据之间用逗号隔开。
列表的访问方式与字符串相似,使用索引。比如:
>>> L = ['Alice', 'Bob', 9.15, True] >>> L[0] 'Alice' >>> L[2] 9.15 >>> L[1:] ['Bob', 9.15, True]
注意,列表中的某个或某几个数据也可以是列表,而当列表中有数据是列表时,可以使用多重索引的方式访问元素,比如:
>>> L = [1, [2, 3]] >>> L[0] 1 >>> L[1] [2, 3] >>> L[1][0] 2
与字符串相似,列表也有+和*运算,比如:
>>> L1 = ['Alice', 'Bob', 9.15, True] >>> L2 = [-8, 'zyy', 6] >>> L1 + L2 ['Alice', 'Bob', 9.15, True, -8, 'zyy', 6] >>> L1 * 3 ['Alice', 'Bob', 9.15, True, 'Alice', 'Bob', 9.15, True, 'Alice', 'Bob', 9.15, True]
与字符串不同的是,字符串是不能被改变的,而列表可以添加数据、删除数据、更改数据。格式如下:
代码 | 含义 |
L[i] = x | 将列表L中索引位置为i处的数据替换为x |
L.append(x) | 在列表末尾添加数据x |
L.insert(i, x) | 在列表的索引位置为i处添加数据x |
L.pop() | 删除列表L末尾的数据,并打印 |
L.pop(i) | 删除列表L的索引位置为i处的数据 |
下面给出几个实例:
>>> L = ['Alice', 'Bob', 9.15, True] >>> L[0] = 'zyy'#将索引位置为0处的数据替换为'zyy' >>> L ['zyy', 'Bob', 9.15, True] >>> L.append(9)#在列表末尾添加数据9 >>> L ['zyy', 'Bob', 9.15, True, 9] >>> L.insert(1, False)#在列表的索引位置为1处添加数据False >>> L ['zyy', False, 'Bob', 9.15, True, 9] >>> L.pop()#删除列表末尾的数据,并打印 9 >>> L ['zyy', False, 'Bob', 9.15, True] >>> L.pop(2)#删除列表的索引位置为2处的数据,并打印 'Bob' >>> L ['zyy', False, 9.15, True]
Tuple(元组)
Set(集合)
Dictionary(字典)