【Python 零基础入门】第二课 变量 & 数据类型
【Python 零基础入门】第二课 变量 & 数据类型
随着计算机编程逐渐成为一个重要的技能, 许多初学者选择了 Python作为他们的首选编程语言. Python 简单易学, 是为那些没有任何编程背景的人准备的. 在这篇文章中, 我们将深入探讨 Python 的基础知识——变量和数据类型.
变量
变量是存储在内存中的值, 创建变量时我们会在内存中开辟一个空间. 变量用于存数据, 在 Python 中变量无需声明.
Python 中的变量命名规则
- 变量名可以包含字母, 数字和下划线, 单不能以数字开头
- 在 Python 中, 区分大小写, 例如
Variable
和variable
是两个不同的变量 - 不要使用 Python 内置的关键词作为变量名, 例如
Class
- 推荐的命名方式:
- 使用有意义的变量名称, 如 “name” 而不是 “abcd”
- 使用小写字母和下划线为多个单词分隔的方式命名变量, 如 “user_name”
- 避免过去简略的变量名, 如 “x”, “y”, “z”
备注: 如何在 Python 中显示所有关键字列表:
创建变量
例子:
a = 10 # 创建变量a, 并赋值为10
b = "我是小白呀" # 创建变量b, 并赋值为 "我是小白呀"
print(a, b) # 调试输出
输出结果:
10 我是小白呀
注: print
函数用于输出变量的值
背后的逻辑
Python 中的内存空间分为三部分: 代码区, 静态数据区, 和动态数据区. 动态数据区又分为栈和堆. (了解即可)
简单画一下上面代码的背后逻辑:
- 在栈中开辟一块空间, 创建变量 a, 变量 a 指向堆中的值 10
- 在栈中开辟一块空间, 创建变量 b, 变量 b 指向堆中的值 “我是小白呀”
- 输出流通过栈中的方法
print()
, 提取堆中变量对应的值, 并输出在控制台上
每个变量在内存中都用一个存储地址, 我们可以使用 “id” 函数来查看这个地址 (堆中的地址).
例子:
# 创建整型变量
a = 10 # 变量 a 赋值为 10
b = 20 # 变量 b 赋值为 20
print("a,b 的值:", a, b) # 调试输出 a,b 的值
# 查看内存地址
print("a 的内存地址:", id(a))
print("b 的内存地址:", id(b))
输出结果:
a,b 的值: 10 20
a 的内存地址: 140713030947936
b 的内存地址: 140713030948256
常见错误
错误 1, 调用未创建的变量:
a = 1 # 定义a变量
print(b) # 尝试输出未定义的b变量
输出:
Traceback (most recent call last):
File "C:/Users/Windows/Desktop/讲课/第一课 变量常见错误.py", line 2, in <module>
print(b) # 尝试输出未定义的b变量
NameError: name 'b' is not defined
多重赋值
# 多重赋值
a, b, c = 1, 2, 3
print(a)
print(b)
print(c)
输出:
1
2
3
Python 中的动态类型
Python 是一门动态类型的语言, 无需提前声明变量类型. Python 解释器运行时会自动确定变量的类型.
例子, 先定义为整型, 再定义为字符串:
x = 5 # 整型
x = "我是小白呀" # 字符串
数据类型
在 Python 中变量无需制定类型.
Python 中的数据类型有以下几种:
- 数字型:
- 整型 (int)
- 浮点型 (float)
- 布尔型 (bool)
- 非数字型:
- 字符串 (string)
- 列表 (list)
- 元组 (tuple)
- 字典 (dict)
数字型类型
在 Python 中, 数字分为三种类型: 整数, 浮点, 复数, 和布尔类.
整型 (int):
- 整数是没有小数点的数字, 在 Python 整型 (int), 可以是正的, 负的或为 0
浮点型 (float):
- 浮点是带有小数点或者使用科学计数法表示的数字
复数 (Complex Numbers):
- 由实部和虚部组成, 例如
d = 3 + 4j
布尔型 (bool):
- 布尔型表示真 (True) 或 假 (False)
例子:
a = 1 # 整形 (int) 变量
b = 1.23 # 浮点型 (float) 变量
c = True # 布尔型 (bool)
print(a, b, c) # 调试输出变量值
print(type(a), type(b), type(c)) # 调试输出变量类型
输出:
1 1.23 True
<class 'int'> <class 'float'> <class 'bool'>
注: 通过type()
函数, python 会返回变量的类型.
非数字型
例子:
d = "我是小白呀" # 字符串(string)
e = [1, 2, 3] # 列表 (list)
f = (1, 2, 3) # 元组 (tuple)
g = {"课程内容": "Python 基础 2022 最新"} # 字典 (dict)
print(d, e, f, g) # 调试输出变量值
print(type(d), type(e), type(f), type(g)) # 调试输出变量类型
输出结果:
我是小白呀 [1, 2, 3] (1, 2, 3) {'课程内容': 'Python 基础 2022 最新'}
<class 'str'> <class 'list'> <class 'tuple'> <class 'dict'>
注: 通过type()
函数, python 会返回变量的类型.
数据类型转换
在编程的过程中, 有时我们需要将一个数据类型转换成另一个数据类型. Python 提供了一系列函数来帮助我们来实现数据类型转换.
常见的类型转换函数:
- int():将一个值转换为整数。
- float():将一个值转换为浮点数。
- str():将一个值转换为字符串。
浮点转整数
例子:
a = 1.23 # 创建浮点型 (float)
b = int(a) # 将浮点型转换为整数型 (int)
print(a, b) # 调试输出变量值
print(type(a), type(b)) # 调试输出变量类型
输出结果:
1.23 1
<class 'float'> <class 'int'>
整数转布尔
例子:
a = 2 # 创建整数型 (int)
b = bool(a) # 将整数型转换为布尔 (bool)
print(a, b) # 调试输出变量值
print(type(a), type(b)) # 调试输出变量类型
输出结果:
True
<class 'int'> <class 'bool'>
注: 当非 0 的数字转换为布尔的时候为 True, 反之为 False.
常见错误
例子:
a = "我是小白呀" # 创建字符串
b = int(a) # 强转为整数型
print(a, b) # 调试输出变量值
print(type(a), type(b)) # 调试输出变量类型
输出结果:
Traceback (most recent call last):
File "C:/Users/Windows/Desktop/讲课/第一课 数据类型转换.py", line 21, in <module>
b = int(a)
ValueError: invalid literal for int() with base 10: '我是小白呀'
注: 某些类型之间不能进行强制转换.
可变性 vs 不可变性
在 Python 中, 每个对象都有一个关键的属性, 即可变性或不可变性.
可变数据类型
可变数据类型: 对象一旦创建, 其内容就可以被修改. 可变数据类型包括:
- 列表 (list)
- 字典 (dict)
- 集合 (set)
不可变数据类型
不可变数据类型: 与可变数据类型相反, 这些类型的对象一旦创建, 其内容不能被修改. 不可变数据类型包括:
- 整型 (int)
- 浮点 (float)
- 复数
- 字符串 (string)
- 元组 (tuple)
例子:
# 整形
a = 10
print("整形变量a修改之前地址:{}".format(id(a)))
a = 20
print("整形变量a修改之后地址:{}".format(id(a)))
输出结果:
整形变量a修改之前地址:140713088816224
整形变量a修改之后地址:140713088816544
总结
- 性能: 不可变对象由于其固定不变的特性, 能提升程序性能
- 安全性: 不可变对象在多线程中更安全, 不存在被多个线程修改的问题
- 代码可预测性: 了解对象的可变性有助于预测和理解代码行为
- 减少错误: 不可变性减少了对象状态意外更改引起的错误, 代码可靠性更高
练习
基础变量操作
基础变量操作:
- 创建一个变量 “name” 并将它赋值为你的名字
- 打印这个变量的值以及数据类型
数字类型练习
数字类型练习:
- 创建两个变量,
a=10
,b=20
- 执行加减乘除操作, 并打印结果
数据类型转换
数据类型转换:
- 创建一个浮点数变量 “float_num” 并赋值 3.14
- 将 “float_num” 转换为整型并打印结果
参考答案
# 练习 1
name = "我是小白呀"
print("练习1:")
print(name, type(name))
# 练习 2
a = 10
b = 20
print("练习2:")
print("加:", a + b)
print("减:", a - b)
print("乘:", a * b)
print("除:", a / b)
# 练习 3
float_num = 3.14
int_num = int(float_num)
print("练习3:")
print("类型转换前:", float_num, "转换为整型后:", int_num)
输出结果:
练习1:
我是小白呀 <class 'str'>
练习2:
加: 30
减: -10
乘: 200
除: 0.5
练习3:
类型转换前: 3.14 转换为整型后: 3