【Python 零基础入门】第二课 变量 & 数据类型

随着计算机编程逐渐成为一个重要的技能, 许多初学者选择了 Python作为他们的首选编程语言. Python 简单易学, 是为那些没有任何编程背景的人准备的. 在这篇文章中, 我们将深入探讨 Python 的基础知识——变量和数据类型.

【Python 零基础入门】变量 & 数据类型-LMLPHP

变量

变量是存储在内存中的值, 创建变量时我们会在内存中开辟一个空间. 变量用于存数据, 在 Python 中变量无需声明.

【Python 零基础入门】变量 & 数据类型-LMLPHP

Python 中的变量命名规则

  1. 变量名可以包含字母, 数字和下划线, 单不能以数字开头
  2. 在 Python 中, 区分大小写, 例如Variablevariable是两个不同的变量
  3. 不要使用 Python 内置的关键词作为变量名, 例如Class
  4. 推荐的命名方式:
    • 使用有意义的变量名称, 如 “name” 而不是 “abcd”
    • 使用小写字母和下划线为多个单词分隔的方式命名变量, 如 “user_name”
    • 避免过去简略的变量名, 如 “x”, “y”, “z”

备注: 如何在 Python 中显示所有关键字列表:

【Python 零基础入门】变量 & 数据类型-LMLPHP

创建变量

例子:

a = 10  # 创建变量a, 并赋值为10
b = "我是小白呀"  # 创建变量b, 并赋值为 "我是小白呀"
print(a, b)  # 调试输出

输出结果:

10 我是小白呀

注: print函数用于输出变量的值

背后的逻辑

Python 中的内存空间分为三部分: 代码区, 静态数据区, 和动态数据区. 动态数据区又分为栈和堆. (了解即可)

简单画一下上面代码的背后逻辑:
【Python 零基础入门】变量 & 数据类型-LMLPHP

  • 在栈中开辟一块空间, 创建变量 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():将一个值转换为字符串。
    【Python 零基础入门】变量 &amp; 数据类型-LMLPHP

浮点转整数

例子:

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

总结

  1. 性能: 不可变对象由于其固定不变的特性, 能提升程序性能
  2. 安全性: 不可变对象在多线程中更安全, 不存在被多个线程修改的问题
  3. 代码可预测性: 了解对象的可变性有助于预测和理解代码行为
  4. 减少错误: 不可变性减少了对象状态意外更改引起的错误, 代码可靠性更高

练习

基础变量操作

基础变量操作:

  • 创建一个变量 “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
10-19 00:39