前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python自学01-数据类型

Python自学01-数据类型

原创
作者头像
星哥玩云
发布2025-05-12 18:50:20
发布2025-05-12 18:50:20
12800
代码可运行
举报
文章被收录于专栏:python自学成菜python自学成菜
运行总次数:0
代码可运行

Python自学01-数据类型

计算机作为具备数学计算能力的设备,其程序能够处理各类数值。然而,计算机的处理范畴远不止于数值,还涵盖了文本、图形、音频、视频、网页等多样化的数据形式。针对不同的数据,需要定义相应的数据类型。在Python编程语言中,可直接处理的数据类型包含以下几种:

整数

Python具备处理任意大小整数的能力,其中也包括负整数。在程序里,整数的表示方式与数学中的写法一致,例如:1100-80800等。

由于计算机采用二进制进行运算,因此在某些情况下,使用十六进制来表示整数会更为便捷。十六进制以0x为前缀,结合0 - 9以及a - f来表示数值,例如:0xff000xa5b4c3d2等。

对于较大的数值,如10000000000,难以准确数清其中0的个数。Python允许在数字中间使用_进行分隔,所以10_000_000_00010000000000的表示效果完全相同。十六进制数同样可以采用这种方式,如0xa1b2_c3d4

浮点数

浮点数即小数,之所以被称为浮点数,是因为在采用科学记数法表示时,其小数点的位置是可变的。例如,1.23x10⁹和12.3x10⁸在数值上是完全相等的。浮点数可以使用常规的数学写法,如1.233.14-9.01等。但对于极大或极小的浮点数,则需要运用科学计数法来表示,将10用e替代,1.23x10⁹可表示为1.23e912.3e8,0.000012可写成1.2e - 5等。

整数和浮点数在计算机内部的存储方式存在差异,整数运算始终保持精确性(包括除法运算),而浮点数运算可能会出现四舍五入的误差。

字符串

字符串是由单引号'或双引号"括起来的任意文本,例如'abc'"xyz"等。需要注意的是,''""仅仅是字符串的表示形式,并非字符串的组成部分。因此,字符串'abc'仅包含abc这3个字符。若字符串中本身包含',则可以使用""进行括起,例如"I'm OK"包含的字符为I'm、空格、OK这6个字符。

若字符串内部同时包含'",可以使用转义字符\来进行标识,例如:

代码语言:javascript
代码运行次数:0
运行
复制
'I\'m "OK"!'

上述代码表示的字符串内容为:

代码语言:javascript
代码运行次数:0
运行
复制
I'm "OK"!

转义字符\能够对多种字符进行转义,例如\n表示换行,\t表示制表符,字符\本身也需要进行转义,所以\\表示的字符即为\。可以在Python的交互式命令行中使用print()函数来打印字符串,示例如下:

代码语言:javascript
代码运行次数:0
运行
复制
>>> print('I\'m ok.')
I'm ok.
​
>>> print('I\'m learning\nPython.')
I'm learning
Python.
​
>>> print('\\\n\\')
\
\

若字符串中存在大量需要转义的字符,就需要添加大量的\。为了简化操作,Python允许使用r''来表示''内部的字符串默认不进行转义,可自行进行测试:

代码语言:javascript
代码运行次数:0
运行
复制
>>> print('\\\t\\')
\       \
​
>>> print(r'\\\t\\')
\\\t\\

若字符串内部包含多行内容,使用\n写在一行中会影响阅读的便利性。为了简化操作,Python允许使用'''...'''的格式来表示多行内容,可自行进行测试:

代码语言:javascript
代码运行次数:0
运行
复制
>>> print('''line1
... line2
... line3''')
line1
line2
line3

上述代码是在交互式命令行中输入的示例。需要注意的是,在输入多行内容时,提示符会由>>>变为...,这提示你可以继续在上一行的基础上进行输入。...属于提示符,并非代码的一部分:

代码语言:javascript
代码运行次数:0
运行
复制
┌────────────────────────────────────────────────────────┐
│Command Prompt - python                           _ □ x │
├────────────────────────────────────────────────────────┤
│>>> print('''line1                                      │
│... line2                                               │
│... line3''')                                           │
│line1                                                   │
│line2                                                   │
│line3                                                   │
│                                                        │
│>>> _                                                   │
│                                                        │
│                                                        │
│                                                        │
└────────────────────────────────────────────────────────┘

当输入完结束符```和括号)后,程序将执行该语句并打印结果。

若将上述代码写成程序并保存为.py文件,则内容如下:

代码语言:javascript
代码运行次数:0
运行
复制
print('''line1
line2
line3''')

多行字符串'''...'''同样可以在前面加上r来使用,请自行进行测试:

代码语言:javascript
代码运行次数:0
运行
复制
# -*- coding: utf - 8 -*-

布尔值

布尔值与布尔代数的表示方式完全一致,只有TrueFalse两种取值,即要么为True,要么为False。在Python中,可以直接使用TrueFalse来表示布尔值(需注意大小写),也可以通过布尔运算得出结果,示例如下:

代码语言:javascript
代码运行次数:0
运行
复制
>>> True
True
>>> False
False
>>> 3 > 2
True
>>> 3 > 5
False

布尔值可以进行andornot运算。

and运算属于与运算,只有当所有参与运算的值都为True时,and运算的结果才为True,示例如下:

代码语言:javascript
代码运行次数:0
运行
复制
>>> True and True
True
>>> True and False
False
>>> False and False
False
>>> 5 > 3 and 3 > 1
True

or运算属于或运算,只要参与运算的值中有一个为Trueor运算的结果即为True,示例如下:

代码语言:javascript
代码运行次数:0
运行
复制
>>> True or True
True
>>> True or False
True
>>> False or False
False
>>> 5 > 3 or 1 > 3
True

not运算属于非运算,它是一个单目运算符,能够将True变为False,将False变为True,示例如下:

代码语言:javascript
代码运行次数:0
运行
复制
>>> not True
False
>>> not False
True
>>> not 1 > 2
True

布尔值在条件判断中应用广泛,例如:

代码语言:javascript
代码运行次数:0
运行
复制
if age >= 18:
    print('adult')
else:
    print('teenager')

空值

空值是Python中的一个特殊值,用None表示。需要注意的是,None不能等同于0,因为0是具有实际意义的数值,而None则是一个特殊的空值。

此外,Python还提供了列表、字典等多种数据类型,并且允许用户创建自定义的数据类型,后续将继续进行讲解。

变量

变量的概念与初中代数中的方程变量基本一致,不同之处在于,在计算机程序中,变量不仅可以是数字,还可以是任意的数据类型。

在程序中,变量通过变量名来进行表示。变量名必须由大小写英文、数字和_组合而成,且不能以数字开头,例如:

代码语言:javascript
代码运行次数:0
运行
复制
a = 1

上述代码中,变量a为一个整数。

代码语言:javascript
代码运行次数:0
运行
复制
t_007 = 'T007'

上述代码中,变量t_007为一个字符串。

代码语言:javascript
代码运行次数:0
运行
复制
Answer = True

上述代码中,变量Answer为一个布尔值True

在Python中,等号=属于赋值语句,可以将任意数据类型赋值给变量。同一个变量可以多次进行赋值,并且可以是不同类型的变量,示例如下:

代码语言:javascript
代码运行次数:0
运行
复制
# -*- coding: utf - 8 -*-

这种变量本身类型不固定的语言被称为动态语言,与之相对的是静态语言。静态语言在定义变量时必须明确指定变量的类型,若赋值时类型不匹配,将会报错。例如,Java属于静态语言,其赋值语句如下(//表示注释):

代码语言:javascript
代码运行次数:0
运行
复制
int a = 123; // a是整数类型变量
a = "ABC"; // 错误:不能把字符串赋给整型变量

与静态语言相比,动态语言具有更高的灵活性,这也是其优势所在。

需要注意的是,不要将赋值语句的等号等同于数学中的等号。例如下面的代码:

代码语言:javascript
代码运行次数:0
运行
复制
x = 10
x = x + 2

从数学角度来看,x = x + 2显然是不成立的。但在程序中,赋值语句会先计算右侧的表达式x + 2,得到结果12,然后将其赋值给变量x。由于x之前的值为10,重新赋值后,x的值变为12

最后,理解变量在计算机内存中的表示方式也十分重要。当我们编写代码:

代码语言:javascript
代码运行次数:0
运行
复制
a = 'ABC'

时,Python解释器会执行以下两个操作:

  1. 在内存中创建一个'ABC'的字符串;
  2. 在内存中创建一个名为a的变量,并将其指向'ABC'

也可以将一个变量a赋值给另一个变量b,这个操作实际上是将变量b指向变量a所指向的数据,例如下面的代码:

代码语言:javascript
代码运行次数:0
运行
复制
# -*- coding: utf - 8 -*-

最后一行打印出变量b的内容究竟是'ABC'还是'XYZ'呢?如果从数学意义上进行理解,可能会错误地认为ba相同,也应该是'XYZ',但实际上b的值为'ABC'。让我们逐行执行代码,来观察具体发生的情况:

执行a = 'ABC'时,解释器会创建字符串'ABC'和变量a,并将a指向'ABC'

执行b = a时,解释器会创建变量b,并将b指向a所指向的字符串'ABC'

执行a = 'XYZ'时,解释器会创建字符串'XYZ',并将a的指向改为'XYZ',但b的指向并未发生改变:

因此,最后打印变量b的结果自然是'ABC'

常量

所谓常量,即不可改变的变量,例如常用的数学常数π就是一个常量。在Python中,通常使用全部大写的变量名来表示常量,例如:

代码语言:javascript
代码运行次数:0
运行
复制
PI = 3.14159265359

但实际上,PI仍然是一个变量,Python并没有任何机制来确保PI不会被改变。因此,使用全部大写的变量名来表示常量只是一种习惯用法,如果你坚持要改变变量PI的值,也不会受到限制。

最后,对整数的除法运算为何也是精确的进行解释。在Python中,存在两种除法运算,一种是/

代码语言:javascript
代码运行次数:0
运行
复制
>>> 10 / 3
3.3333333333333335

/除法的计算结果为浮点数,即使两个整数恰好能够整除,结果仍然是浮点数,例如:

代码语言:javascript
代码运行次数:0
运行
复制
>>> 9 / 3
3.0

另一种除法是//,称为地板除,两个整数进行地板除的结果仍然是整数,例如:

代码语言:javascript
代码运行次数:0
运行
复制
>>> 10 // 3
3

可以看到,整数的地板除//始终返回整数,即使除不尽。若需要进行精确的除法运算,使用/即可。

由于//除法只取结果的整数部分,因此Python还提供了余数运算,用于获取两个整数相除的余数,例如:

代码语言:javascript
代码运行次数:0
运行
复制
>>> 10 % 3
1

无论进行整数的//除法还是取余数运算,结果始终为整数,因此整数运算的结果始终保持精确性。

练习

请打印出以下变量的值:

代码语言:javascript
代码运行次数:0
运行
复制
# -*- 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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python自学01-数据类型
    • 整数
    • 浮点数
    • 字符串
    • 布尔值
    • 空值
    • 变量
    • 常量
    • 练习
    • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档