计算机作为具备数学计算能力的设备,其程序能够处理各类数值。然而,计算机的处理范畴远不止于数值,还涵盖了文本、图形、音频、视频、网页等多样化的数据形式。针对不同的数据,需要定义相应的数据类型。在Python编程语言中,可直接处理的数据类型包含以下几种:
Python具备处理任意大小整数的能力,其中也包括负整数。在程序里,整数的表示方式与数学中的写法一致,例如:1
、100
、-8080
、0
等。
由于计算机采用二进制进行运算,因此在某些情况下,使用十六进制来表示整数会更为便捷。十六进制以0x
为前缀,结合0 - 9以及a - f来表示数值,例如:0xff00
、0xa5b4c3d2
等。
对于较大的数值,如10000000000
,难以准确数清其中0的个数。Python允许在数字中间使用_
进行分隔,所以10_000_000_000
与10000000000
的表示效果完全相同。十六进制数同样可以采用这种方式,如0xa1b2_c3d4
。
浮点数即小数,之所以被称为浮点数,是因为在采用科学记数法表示时,其小数点的位置是可变的。例如,1.23x10⁹和12.3x10⁸在数值上是完全相等的。浮点数可以使用常规的数学写法,如1.23
、3.14
、-9.01
等。但对于极大或极小的浮点数,则需要运用科学计数法来表示,将10用e替代,1.23x10⁹可表示为1.23e9
或12.3e8
,0.000012可写成1.2e - 5
等。
整数和浮点数在计算机内部的存储方式存在差异,整数运算始终保持精确性(包括除法运算),而浮点数运算可能会出现四舍五入的误差。
字符串是由单引号'
或双引号"
括起来的任意文本,例如'abc'
、"xyz"
等。需要注意的是,''
或""
仅仅是字符串的表示形式,并非字符串的组成部分。因此,字符串'abc'
仅包含a
、b
、c
这3个字符。若字符串中本身包含'
,则可以使用""
进行括起,例如"I'm OK"
包含的字符为I
、'
、m
、空格、O
、K
这6个字符。
若字符串内部同时包含'
和"
,可以使用转义字符\
来进行标识,例如:
'I\'m "OK"!'
上述代码表示的字符串内容为:
I'm "OK"!
转义字符\
能够对多种字符进行转义,例如\n
表示换行,\t
表示制表符,字符\
本身也需要进行转义,所以\\
表示的字符即为\
。可以在Python的交互式命令行中使用print()
函数来打印字符串,示例如下:
>>> print('I\'m ok.')
I'm ok.
>>> print('I\'m learning\nPython.')
I'm learning
Python.
>>> print('\\\n\\')
\
\
若字符串中存在大量需要转义的字符,就需要添加大量的\
。为了简化操作,Python允许使用r''
来表示''
内部的字符串默认不进行转义,可自行进行测试:
>>> print('\\\t\\')
\ \
>>> print(r'\\\t\\')
\\\t\\
若字符串内部包含多行内容,使用\n
写在一行中会影响阅读的便利性。为了简化操作,Python允许使用'''...'''
的格式来表示多行内容,可自行进行测试:
>>> print('''line1
... line2
... line3''')
line1
line2
line3
上述代码是在交互式命令行中输入的示例。需要注意的是,在输入多行内容时,提示符会由>>>
变为...
,这提示你可以继续在上一行的基础上进行输入。...
属于提示符,并非代码的一部分:
┌────────────────────────────────────────────────────────┐
│Command Prompt - python _ □ x │
├────────────────────────────────────────────────────────┤
│>>> print('''line1 │
│... line2 │
│... line3''') │
│line1 │
│line2 │
│line3 │
│ │
│>>> _ │
│ │
│ │
│ │
└────────────────────────────────────────────────────────┘
当输入完结束符```
和括号)
后,程序将执行该语句并打印结果。
若将上述代码写成程序并保存为.py
文件,则内容如下:
print('''line1
line2
line3''')
多行字符串'''...'''
同样可以在前面加上r
来使用,请自行进行测试:
# -*- coding: utf - 8 -*-
布尔值与布尔代数的表示方式完全一致,只有True
和False
两种取值,即要么为True
,要么为False
。在Python中,可以直接使用True
和False
来表示布尔值(需注意大小写),也可以通过布尔运算得出结果,示例如下:
>>> True
True
>>> False
False
>>> 3 > 2
True
>>> 3 > 5
False
布尔值可以进行and
、or
和not
运算。
and
运算属于与运算,只有当所有参与运算的值都为True
时,and
运算的结果才为True
,示例如下:
>>> True and True
True
>>> True and False
False
>>> False and False
False
>>> 5 > 3 and 3 > 1
True
or
运算属于或运算,只要参与运算的值中有一个为True
,or
运算的结果即为True
,示例如下:
>>> True or True
True
>>> True or False
True
>>> False or False
False
>>> 5 > 3 or 1 > 3
True
not
运算属于非运算,它是一个单目运算符,能够将True
变为False
,将False
变为True
,示例如下:
>>> not True
False
>>> not False
True
>>> not 1 > 2
True
布尔值在条件判断中应用广泛,例如:
if age >= 18:
print('adult')
else:
print('teenager')
空值是Python中的一个特殊值,用None
表示。需要注意的是,None
不能等同于0
,因为0
是具有实际意义的数值,而None
则是一个特殊的空值。
此外,Python还提供了列表、字典等多种数据类型,并且允许用户创建自定义的数据类型,后续将继续进行讲解。
变量的概念与初中代数中的方程变量基本一致,不同之处在于,在计算机程序中,变量不仅可以是数字,还可以是任意的数据类型。
在程序中,变量通过变量名来进行表示。变量名必须由大小写英文、数字和_
组合而成,且不能以数字开头,例如:
a = 1
上述代码中,变量a
为一个整数。
t_007 = 'T007'
上述代码中,变量t_007
为一个字符串。
Answer = True
上述代码中,变量Answer
为一个布尔值True
。
在Python中,等号=
属于赋值语句,可以将任意数据类型赋值给变量。同一个变量可以多次进行赋值,并且可以是不同类型的变量,示例如下:
# -*- coding: utf - 8 -*-
这种变量本身类型不固定的语言被称为动态语言,与之相对的是静态语言。静态语言在定义变量时必须明确指定变量的类型,若赋值时类型不匹配,将会报错。例如,Java属于静态语言,其赋值语句如下(//
表示注释):
int a = 123; // a是整数类型变量
a = "ABC"; // 错误:不能把字符串赋给整型变量
与静态语言相比,动态语言具有更高的灵活性,这也是其优势所在。
需要注意的是,不要将赋值语句的等号等同于数学中的等号。例如下面的代码:
x = 10
x = x + 2
从数学角度来看,x = x + 2
显然是不成立的。但在程序中,赋值语句会先计算右侧的表达式x + 2
,得到结果12
,然后将其赋值给变量x
。由于x
之前的值为10
,重新赋值后,x
的值变为12
。
最后,理解变量在计算机内存中的表示方式也十分重要。当我们编写代码:
a = 'ABC'
时,Python解释器会执行以下两个操作:
'ABC'
的字符串;a
的变量,并将其指向'ABC'
。也可以将一个变量a
赋值给另一个变量b
,这个操作实际上是将变量b
指向变量a
所指向的数据,例如下面的代码:
# -*- coding: utf - 8 -*-
最后一行打印出变量b
的内容究竟是'ABC'
还是'XYZ'
呢?如果从数学意义上进行理解,可能会错误地认为b
和a
相同,也应该是'XYZ'
,但实际上b
的值为'ABC'
。让我们逐行执行代码,来观察具体发生的情况:
执行a = 'ABC'
时,解释器会创建字符串'ABC'
和变量a
,并将a
指向'ABC'
:
执行b = a
时,解释器会创建变量b
,并将b
指向a
所指向的字符串'ABC'
:
执行a = 'XYZ'
时,解释器会创建字符串'XYZ'
,并将a
的指向改为'XYZ'
,但b
的指向并未发生改变:
因此,最后打印变量b
的结果自然是'ABC'
。
所谓常量,即不可改变的变量,例如常用的数学常数π就是一个常量。在Python中,通常使用全部大写的变量名来表示常量,例如:
PI = 3.14159265359
但实际上,PI
仍然是一个变量,Python并没有任何机制来确保PI
不会被改变。因此,使用全部大写的变量名来表示常量只是一种习惯用法,如果你坚持要改变变量PI
的值,也不会受到限制。
最后,对整数的除法运算为何也是精确的进行解释。在Python中,存在两种除法运算,一种是/
:
>>> 10 / 3
3.3333333333333335
/
除法的计算结果为浮点数,即使两个整数恰好能够整除,结果仍然是浮点数,例如:
>>> 9 / 3
3.0
另一种除法是//
,称为地板除,两个整数进行地板除的结果仍然是整数,例如:
>>> 10 // 3
3
可以看到,整数的地板除//
始终返回整数,即使除不尽。若需要进行精确的除法运算,使用/
即可。
由于//
除法只取结果的整数部分,因此Python还提供了余数运算,用于获取两个整数相除的余数,例如:
>>> 10 % 3
1
无论进行整数的//
除法还是取余数运算,结果始终为整数,因此整数运算的结果始终保持精确性。
请打印出以下变量的值:
# -*- coding: utf - 8 -*-
n = 123
f = 456.789
s1 = 'Hello, world'
s2 = 'Hello, \'Adam\''
s3 = r'Hello, "Bart"'
s4 = r'''Hello,
Lisa!'''
Python支持多种数据类型,在计算机内部,可以将任何数据都视为一个“对象”,而变量则是在程序中用于指向这些数据对象的标识。对变量进行赋值操作,实际上就是将数据与变量进行关联。
对变量赋值x = y
是将变量x
指向变量y
所指向的实际对象。后续对变量y
的赋值操作不会影响变量x
的指向。
需要注意的是,Python的整数没有大小限制,而某些语言的整数根据其存储长度存在大小限制,例如Java对32位整数的范围限制在- 2147483648
- 2147483647
。
Python的浮点数同样没有大小限制,但超出一定范围后会直接表示为inf
(无限大)。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。