文章目录
Python—变量、基本数据类型
1 格式化输出
-
% 操作符
-
format() 函数
更多使用推荐阅读:Python format 格式化函数 | 菜鸟教程
-
f-strings 的形式
# 变量声明
name = "tom"
age = 23
gender = "男"
# 默认使用空格进行间隔
print("个人信息:", name, age)
# 格式化输出
# % 操作符形式
print("个人信息:%s - %d - %s" % (name, age, gender))
# format() 函数
# 使用 {} 进行占位
print("个人信息:{} _ {} _ {}".format(name, age, gender))
# f-strings 的形式
# 使用{变量}进行占位
# 注意在前面加上 f
print(f"个人信息:{name}={age}={gender}")
2 + 号的使用
+
号2边都是数值,则数值相加+
号2边都是字符串,则字符串拼接+
一边是数值,一边是字符串,则会报错
3 变量的数据类型
- python 中的变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
- 我们所说的 “类型” 是变量所指的内存数据的类型。
a = 10
b = "name is b"

- a、b 是变量,在 python 中,变量是没有类型的
- a、b 变量指向的数据,10、“name is b” 是有类型的
- 10、“name is b” 有些地方也称为字面量
4 type() 函数的使用
语法: type(object)
object
就是你要查看类型的数据,可以是一个具体的数据(即,字面量),也可以是变量(也就是查看该变量指向的数据的类型)
name = "tom"
age = 12
account = 33.3
age_18 = False
print(type(name))
print(type(age))
print(type(account))
print(type(age_18))
5 数据类型的基本介绍
python
中的数据类型,有如下几种:
类型 | 描述 |
---|---|
整型 int | 整数:比如 1,-1,100等 |
浮点数 float | 小数:比如 1.1,-4.5,99.9等 |
布尔值 bool | 布尔值就是我们常说的逻辑,有2个值:Ture,False |
字符串 string | 字符串就是字符组成的一串内容,python 中用成对的单引号或双引号括起来,比如 “abcd_efg” |
5.1 int 整型
-
python 中的整型,可以表示很大的数(官方给定的范围:the limit (4300 digits) for integer)
# 在 python 中 a ** b 表示 a的b次方 a = 100 ** 9999 print(a)
可以看到,当我们输出的数大于规定的范围时,会有如下报错信息:
-
python 的整型有 十进制、十六进制、八进制、二进制
-
十进制就是我们日常使用中的写法,比如1,6,20等
-
十六进制写法:加前缀 0x ,由 0-9 和 A-F 的数字和字母组合
-
八进制写法:加前缀 0o,由 0-7 数字组合
-
二进制写法:加前缀 0b,只有数字 0 和 1 组合
-
在运行时,会自动转换为十进制输出,即:
print(0x10)
输出的是 16
-
python 中整型占多少个字节呢?
- 字节数随这数字的增大而增大(即:python 整型是变长的)
- 每次增量是4个字节
- 可以参考下面的文档:
Python中的整型占多少个字节? - Huahua’s Tech Road
# int 类型的大小是变长的随存储的数据大小变长
# sys.getsizeof 查看对象的大小,以字节表示
import sys
n1 = 2
n2 = 2 ** 6
n3 = 125 ** 5
n4 = 150 ** 12
n5 = 342 ** 13
print(sys.getsizeof(n1))
print(sys.getsizeof(n2))
print(sys.getsizeof(n3))
print(sys.getsizeof(n4))
print(sys.getsizeof(n5))
5.2 float 浮点类型
-
python 的浮点类型可以表示一个小数,比如 2.1,4.98,-0.66等。
-
浮点数表示形式如下:
- 十进制形式:5.12;.512
- 科学计数法形式:5.12e2(表示5.12 * 100);5.12E-2 (5.12 / 100)
-
浮点数有大小限制,边界值为:
max = 1.7976931348623157e + 308
min = 2.2250738585072014e - 308
-
浮点类型计算以后,存在精度的损失,可以使用 Decimal 类进行精确计算。
a = 8.1 / 3
print("a = ", a)
# 浮点数计算后存在精度的损失,可以使用 Decimal 类进行精确计算
# 使用 Decimal 类需要导入
from decimal import Decimal
b = Decimal("8.1") / Decimal("3")
print("b = ", b)
5.3 bool 布尔类型
-
布尔类型也叫 bool 类型,取值 True 和 False
-
True 和 False 都是关键字
-
bool 类型适用与逻辑运算,一般用于程序流程控制
- 条件控制语句
- 循环控制语句
-
布尔类型可以和其他数据类型进行比较,比如数字、字符串等。在比较时,python 会将 True 视为 1,False 视为 0
True + 10
的值为 11;False + 10
的值为 10 -
在 python 中,非 0 被视为真值,0 值被视为假值
if -3: print("-3为真值") if 2: print("2为真值") if "zifc": print("非空的字符串为真值") if "": print("空字符串为假值")
5.4 str 字符串类型
-
字符串是 python 中很常用的数据类型,通俗来说,字符串就是字符组成的一串内容
-
使用单引号或双引号(‘’ 或 `)包括起来,创建字符串
-
str 就是 string 的缩写,在使用 type() 查看数据类型时,字符串类型显示的是 str
-
通过 + 号可以连接字符串
-
python
不支持单字符类型,单字符在 python 中也是作为一个字符串使用 -
用三个单引号 (```内容```) ,或三个双引号( “”“内容”“” ) 可以使字符串内容保持原样输出,在输出格式复杂的内容是比较有用的,比如输出一段代码。
-
在字符串前面加
r
可以使整个字符串不会被转义。
5.5 字符串驻留机制
python 仅保留一份相同且不可变字符串,不同的值被存放在字符串的驻留池中,python 的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。
id() 函数的介绍:
str1 = "abc"
str2 = "abc"
str3 = "abc"
print("str1 = ", id(str1))
print("str2 = ", id(str2))
print("str3 = ", id(str3))
- 驻留机制几种情况讨论(注意:需要在交互模式下进行验证,进入交互模式:win + r --> 输入 python 然后回车)
-
字符串是由26个英文字母大小写,0-9,_(下划线) 组成会出现驻留
下图中,字符串包含 # 号没有出现驻留的情况
-
字符串长度为0或者1时,会出现驻留情况
-
字符串在编译时进行驻留,而非运行时。
下图中,
b = "".join(["a","bc"])
表示进行字符串拼接,要在运行之后b才等于"abc" -
[-5,256] 的整数数字,会发生驻留情况。
-
sys 中的 intern 方法可以强制 2 个字符串指向同一个对象
-
注意在 pycharm 软件中,对驻留机制进行了优化,使得字符串都可以实现驻留。
-
驻留机制的好处
当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存。
5.6 数据类型的转换
(1)隐式转换
- python 变量的类型不是固定的,会根据变量当前值在运行时决定的,可以通过内置函数 type(变量) 来查看其类型,这种方式就是隐式转换,也成为自动转换。
var = 10
print(type(var)) # int
var = 1.1
print(type(var)) # float
var = "xiong"
print(type(var)) # str
- 在运算时,低精度会自动向高精度转换。
a = 10
b = 1.1
c = a + b
print(type(c)) # float
(2)显式类型转换
- 如果需要对变量数据类型进行转换,只需要将数据类型作为函数名即可,这种方式就是显式转换/强制转换
- 下表的内置函数可以完成数据类型之间的转换,函数会返回一个新的对象/值,就是强制转换后的结果。
函数 | 描述 |
---|---|
int(x [,base]) | 将x转换为一个整数 |
float(x) | 将x转换到一个浮点数 |
complex(real [,imag]) | 创建一个复数 |
str(x) | 将对象 x 转换为字符串 |
repr(x) | 将对象 x 转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) | 将序列 s 转换为一个元组 |
list(s) | 将序列 s 转换为一个列表 |
set(s) | 转换为可变集合 |
dict(d) | 创建一个字典。d 必须是一个 (key, value)元组序列。 |
frozenset(s) | 转换为不可变集合 |
chr(x) | 将一个整数转换为一个字符 |
ord(x) | 将一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |
(3)显示类型转换注意事项
-
不管什么值的 int ,float 都可以转换为 str,使用 str(x) 将对象 x 转换为字符串
-
int 转换为 float 时,会增加小数部分,比如 float(123) -> 123.0,float 转成 int 时,会去掉小数部分,比如 int(123.56) -> 123
-
str 转 int ,float 使用 int(x),float(x) 将对象转换为 int/float
注意: str 的格式要符合转换的要求,比如 ”123“ 可以转为 int,“abc” 却不能转为 int 和 float。
“123.45” 可以转为 float,但是不能转为 int
str1 = "123.45" a = int(str1) print(type(a))
也就是说字符串转 int ,要求该字符串能直接转。
-
对一个变量进行强制转换,会返回一个数据/值,注意强制转换后,并不会影响原变量的数据类型(即不会影响原变量指向的数据/值的数据类型)
var1 = 12.3 var2 = int(var1) # var1 还是指向 12.3 # var2 指向12