数据类型
数据类型指的就是变量的值的类型,也就是可以为变量赋哪些值。
- 在Python中,数值分为三种:整数、浮点数(小数)、复数
-
整数
-
在Python中所有的整数都是int类型
-
Python中的整数的大小都没有限制,可以是一个无限大的整数
-
如果数字的长度过大,可以使用下划线作分隔符
例如:123_245_789
-
10进制的数不能以0开头
-
其他进制的整数,只要是数字,打印时一定是以10进制显示
- 二进制:
0b
开头0b10 # 二进制的10
- 八进制:
0o
开头0o10
- 十六进制:
0x
开头0x10
- 二进制:
-
也可以通过运算符来对数字进行运算,并且可以保证运算的精确
-
-
浮点数(小数),在Python中所有的小数都是
float
(浮点)类型- 对浮点数进行运算时,可能会得到一个不精确的结果
字符串(str)
普通字符串
- 字符串用来表示一段文本信息,字符串是程序中使用的最多的数据类型
- 在Python中字符串需要用引号引起来
- 引号可以是单引号,也可以是双引号
- 例如:
s = 'hello'
,s = "hello"
- 例如:
- 不能混用单双引号
- 例如:
s = 'hello"
会报错SyntaxError: EOL while scanning string literal
- 例如:
- 相同的引号之间不能嵌套
长字符串
- 单双引号不能跨行使用,可以用
\
连接,但不会保留格式。 - 例如:
s = '锄禾日当午,\ 汗滴禾下土。\ 谁知盘中餐,\ 粒粒皆辛苦。'
- 使用三重引号
'''
、"""
表示一个长字符串 - 三重引号可以换行,并且会保留字符串中的格式
- 例如:
s = '''锄禾日当午, 汗滴禾下土。 设置盘中餐, 粒粒皆辛苦。'''
转义字符
- 可以使用
\
作为转义字符,通过转义字符可以在字符串中使用一些特殊内容。 - 例如:
\'
表示'
\"
表示"
\t
表示制表符Tab
\n
表示换行符\\
表示\
\uxxx
表示Unicode
编码
格式化字符串
- 字符串之间也可以进行加法运算
- 如果将两/多个字符串进行相加,则会自动将两/多个字符串拼接成一个。
- 例如
a = 'abc' + 'haha'
,print(a)
的结果为abchaha
- 字符串不能和其他的类型做加法运算,如果做了会报错
TypeError: can only concatenate str (not "int") to str
- 在创建字符串时,可以在字符串中指定占位符
%s
在字符串中表示任意字符%3s
表示字符串有三位,不足三位自动在前面用空格填充%3.5s
表示字符串长度在3-5位之间%f
表示浮点数占位符%.2f
表示保留两位小数,会四舍五入(大于5会入)%d
表示整数占位符,如果后面是浮点数,会自动舍掉小数位
b = 'hello %s'%'孙悟空'
b = 'hello %s 你好 %s'%('tom','孙悟空')
b = 'hello %3s'%'ab' # print(b)结果为hello ab,中间补了一个空格
- 格式化字符串,可以通过在字符串前添加一个`f`来创建一个格式化字符串。 - 在格式化字符串中可以直接嵌入变量
a = 123
b = '呵呵'
c = f'hello {a} {b}'
print(c)
# 以上代码输出结果为:hello 123 呵呵
练习:
# 创建一个变量来保存名字
name = '孙悟空'
# 使用4种方式来输出,欢迎 xxx 光临
# 1_拼串
print('欢迎 ' + name + ' 光临!')
# 2_多个参数
print('欢迎',name,'光临!')
# 3_占位符
print('欢迎 %s 光临!'%name)
# 4_格式化字符串
print(f'欢迎 {name} 光临!')
以上代码输出结果为
欢迎 孙悟空 光临!
欢迎 孙悟空 光临!
欢迎 孙悟空 光临!
欢迎 孙悟空 光临!
字符串的复制
*
在语言中表示乘法- 如果将字符串与数字相乘,则解释器会将字符串重复指定的次数并返回
例子
a = abc
a = a * 2
print(a)
以上代码执行结果为:
abcabc
布尔值(bool)
- 布尔值主要用来做逻辑判断
- 布尔值一共有两个
True
和False
True
表示真,False
表示假- 首字母必须大写
举例:
a = True
b = False
print(a,b)
上例代码执行结果为:
True False
布尔值实际上也属于整型,True
就相当于1
,False
就相当于0
举例:
print(1 + True)
print(1 + False)
上例代码执行结果为
2
1
空值(None)
None
专门用来表示不存在
举例
b = None
上例代码执行结果为
None
类型检查
- 通过类型检查可以检查值(变量)的类型
type()
用来检查值的类型- 该函数会将检查的结果作为返回值返回
- 可以通过变量来接收函数的返回值
举例:
print(type(1))
print(type(1.5))
print(type('hello'))
print(type(True))
print(type(None))
上例代码执行结果为:
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
<class 'NoneType'>
对象(boject)
- Python是一门面向对象的语言
- 一切皆对象!
- 程序运行当中,所有的数据都是存储到内存里,然后再运行!
- 对象就是内存中专门用来存储指定数据的一块区域
- 对象实际上就是一个容器,专门用来存储数据
- 像我们之前学习的数值、字符串
- 布尔值、None都是对象
对象的结构
- 每个对象中都要保存3种数据
-
id(标识)
- id用来标识对象的唯一性,每一个对象都有唯一的id
- 对象的id相当于人的身份证
- 可以通过
id()
函数来查看对象的id - id是由解析器生成的,在CPython中,id就是对象的内存地址。
- 对象一旦创建,则它的id永远不能再改变。
-
type(类型)
- 类型用来表示当前对象所属的类型
- 比如:int、str、float、bool。。。
- 类型决定了对象有哪些功能
- 通过
type()
函数来查看对象的类型 - Python是一门强类型的语言,对象一旦创建,类型不能修改。
- value
- 值就是对象中存储的具体的数据
- 对于有些对象值是可以改变的
- 对象分成两大类,可变对象、不可变对象
- 可变对象的值可以改变
- 不可变对象的值不能改变,之前学习的对象都是不可变对象
变量和对象
- 对象并没有直接存储到变量中,在Python中变量更像是给对象起了个别名
- 变量中存储的不是变量的值,而是对象的id(内存地址)
- 当我们使用变量时,实际上就是通过对象id在查找对象
- 变量中保存的对象,只有在为对象重新赋值时才会改变
- 变量和变量之间是相互独立的,修改一个不会影响另一个
类型转换
- 类型转换,就是将一个类型的对象转换为其他对象。
- 类型转换不是改变对象本身的类型,而是根据当前对象的值创建一个新对象
- 类型转换的四个函数:
int() float() str() bool()
-
int()
可以用来将其他的对象转换为整型
int()
函数不会对原来的变量产生影响,它是将对象转换为指定的类型,并将其作为返回值返回。
如果希望修改原来的变量,则需要对变量进行重新赋值
—
规则:
布尔值:True -> 1,False -> 0
浮点数:直接取整,省略小数点后的内容
字符串:合法的整数字符串,直接转换为对应的数字
如果不是一个合法的字符串,则会报错ValueError
对于其他不可转换为整型的对象,直接抛出异常ValueError
-
float() 和 int()基本一致,不同的是它会将对象转换为浮点数
-
str() 可以将对象转换为字符串
True -> ‘True’
False -> ‘False’
123 -> ‘123’
。。。 -
bool() 可以将对象转换为布尔值,任何对象都可以转换为布尔值
规则:对于所有表示空性的对象都会转换为False,其余的转换为True
哪些表示的空性:0
、None
、''
。。。
# 举例:
a = True
print('a =',a)
print('a的类型是',type(a))
# 以上代码执行结果为:
a = True
a的类型是 <class 'bool'>