2.Python3数据类型
2.1基础知识
2.1.1 Python3注释
在Python中,有2种注释方式:单行注释、多行注释。
单行注释:使用#作为单行注释符号。
>>> print('hello world') #单行注释
hello world
>>> #print('hello world')
>>>
多行注释:使用三引号(‘’’或”””)作为多行注释符号。
>>> '''
hello python
多行注释
hello world
'''
'\nhello python\n多行注释\nhello world\n'
>>> """
hello python
多行注释
hello world
"""
'\nhello python\n多行注释\nhello world\n'
>>>
注:三引号中的注释本质上是字符串。当这个字符串不使用时,表示的就是注释;当字符串使用时,如赋值给变量,其当作字符串来处理。
2.1.2变量
问题:当对一个很长的列表进行复杂运算时,难道每一次运算都要书写这个长列表吗?
解决:使用变量来表示这个长列表。
变量,简而言之就是数据的名称。变量 = 数据,其中”=”称为赋值符号。
变量命名规则:
(1)由字母、数字、下划线(_)组成;
(2)首字母不能是数字;
(3)不能使用特殊符号,如*、$、%等;
(4)变量名不能使用系统关键字,如False、Ture、and、if等。
(5)尽量不要使用函数名来作为变量,如下所示使用type、print函数举例。
重点1:变量的重新赋值
在C语言中,命名一个整形变量int a = 1,a只能是整形变量,无法将其他类型的数据赋值给它,如a = ‘1’就是错误的;在Python中,变量是没有数据类型的,如a = 1,a还可以表示列表,如a = [1,2,3]。
重点2:将多个值分配给多个变量
使用逗号隔开即可。
重点3:变量类型
在Python中,有值类型和引用类型。
数字、字符串、元组都是值类型;列表、集合、字典都是引用类型。数字由于是重新赋值,因此是指类型;字符串和元组不可变,因此也是值类型。
若是重新赋值,则会重新开辟内存空间来存放变量,如下所示:
图中,字符串无法改变但是可以重新赋值,重新赋值后变量str1指向的地址改变,而str2还指向原来的地址,因此str1改变、str2不变。同理,列表A也是重新赋值。
注:字符串中的”+=”也是重新开辟内存空间。
2.1.3关键字
在Python shell中输入help('keywords'),可以查看所有系统关键字。
关键字的含义在后面会一一介绍。
2.2 Number-数字
在数字类型中,分为整形(int)、浮点型(float)、bool型、复数(complex)。
2.2.1整形-int
在C++中,整形有short、int、long、long long;而在Python中,整形只有int。
>>> a = 123456
>>> print(a)
123456
>>> type(a)
<class 'int'>
我们常用的数据都是10进制,而在Python中还有2进制、8进制、16进制。2进制数据以0b/0B开头;8进制以0o/0O开头;16进制以0x/0X开头。
bin()函数将数据转换为2进制;oct()函数将数据转换为8进制;int()函数将数据转换为10进制;hex()函数将数据转换为16进制。
2.2.2浮点型-float
在C++中,浮点数可以分为单精度float、双精度double;但是在Python中,浮点数只用float表示。
在Python中,整数可以是任何长度,但是浮点数只能精确到16位。
>>> a = 0.1234567890123456789
>>> print(a)
0.12345678901234568
int()函数不仅可以进制转换,还可以将浮点数转换为整数;而float()函数可以将整数转换为浮点数。
>>> int(1.2)
1
>>> float(1)
1.0
当执行除法运算时,其返回值必定是浮点数。
>>> type(1/1)
<class 'float'>
注:当执行0.1+0.2,应该等于0.3,但Python并不这么认为!
>>> 0.1 + 0.2
0.30000000000000004
原因:由于计算机只能识别0和1,因此浮点数在计算机中不能准确表达。这是计算机硬件的局限性。
2.2.3复数-complex
复数在Python中以x+yj的形式构成,x表示实部,y表示虚部。
>>> type(1+2j)
<class 'complex'>
complex()函数可以将整数、浮点数转换为复数。
>>> complex(2)
(2+0j)
>>> complex(1.1)
(1.1+0j)
2.2.4布尔类型-bool
布尔类型用非0值表示True,True表示“真”的意思,转换成int等于1;用0、’’、[]、()、{}、None表示False,False表示“假”的意思,转换成int等于0。
>>> type(True)
<class 'bool'>
>>> type(False)
<class 'bool'>
bool()函数可以将其他类型转换为布尔类型。
>>> bool(1.1)
True
>>> bool('1')
True
>>> bool(None)
False
2.3 str-字符串
2.3.1字符串的表示方法
在Python中,字符串用单引号(’’)或双引号(””)来表示;多行字符串使用三引号(‘’’或”””)表示。
>>> str1 = 'hello'
>>> type(str1)
<class 'str'>
>>> str2 = "world"
>>> type(str2)
<class 'str'>
>>> str3 = '''hello
world'''
>>> print(str3)
hello
world
>>> type(str3)
<class 'str'>
>>> str4 = """
hello world
hello python
"""
>>> print(str4)
hello world
hello python
>>> type(str4)
<class 'str'>
问题1:如何表示Let's learn Python?
>>> 'let's learn Python'
SyntaxError: invalid syntax
方法1:使用双引号(推荐)
>>> "let's learn Python"
"let's learn Python"
方法2:外部单引号,内部双引号
>>> 'let"s learn Python'
'let"s learn Python'
方法3:使用转移字符
>>> 'let\'s learn Python'
"let's learn Python"
问题2:前面str4的打印中为什么前后空一行?
原因:当表示多行字符串中,换行符不被显示。
>>> '''