Python 基础语法 - 变量
1. 变量存在的意义
- 变量在程序中是用来保存数据
优点:
- 提高可读性
- 变量使代码更易于理解。通过使用有意义的变量名,其他开发者(或自己在未来)能够更快地理解代码的意图。
- 简化维护
- 如果需要更改某个值,只需修改变量的定义,而不是在代码中查找所有出现该值的地方。这减少了出错的可能性,并提高了维护效率。
- 便于重复利用
- 变量可以在多个地方使用,而不必重复编写相同的值。这提高了代码的可重用性,减少了冗余。
- 动态性
- 变量可以根据程序的运行状态动态地存储和修改值,使得程序能够应对变化的条件或输入。
- 节省内存
- 通过使用变量,可以更有效地管理内存。只需在需要时分配内存,使用完毕后再释放。
- 便于调试
- 通过使用变量,可以轻松地插入打印语句(或使用调试工具)来检查变量的值,帮助找出代码中的问题。
问题:
如果程序中的某个位置需要一个数据,那么在程序中应该如何来提供这个数据?
# 做法1:在需要数据的地方直接提供数据
print(25)
print(90 + 5)
# 做法2:在需要数据的时候,先将数据保存到变量中,再通过这个变量来提供对应的数据
age = 25
print(age)
score = 90
print(score + 5)
总结:
在程序中需要数据的时候,应该先将数据存储到变量中,然后再通过这个变量来使用数据(不要直接使用数据)
2. 定义变量
- 语法
- 变量名 = 数据
a = 123
name = '小明'
age = 18
- 说明
- 变量名 - 由程序员自己命名
- 两个要求:
- 是标识符
- 不是关键字
- 三个规范:
- 见名知义(看到变量名就大概知道这个变量中保存的是什么数据)
- 名字如果由多个单词构成,单词和单词之前用_隔开(目前python也支持驼峰试命名)
- 不适用系统函数名(print、input、type....)、类名(int、float、str、bool)和模块名
- 两个要求:
- = - 赋值符号;固定写法
- 数据 - 需要保存到变量中的内容
- 变量名 - 由程序员自己命名
#变量名 赋值符号 存放数据
a = 123
name = '小明'
age = 18
3. 使用变量/重新赋值
# 在程序中需要数据的时候就直接提供保存数据的变量就可以了
num = 23
print(num)
print(num + 100)
print(type(num))
# 重新给变量赋值
num = 100
print(num)
4. 同时定义多个变量
4.1 同时定义多个变量赋相同的值:
- 格式:变量1 = 变量名2 = 变量名3 = ... = 数据
a = b = c = 100
print(a, b, c)
#三个变量的值都为 100
4.2 同时定义多个变量赋不同的值
- 格式:变量1, 变量名2, 变量名3 = ... = 数据1, 数据2, 数据3, …
#注意: 变量名的数量必须与数据的数量一致
x, y, z = 10, 20, 30
print(x, z, y)
4.3 应用:快速交换两个变量中的数据
# 方法1
# 先定义一个空的容器a,存储m的值,然后定义m = n 的值,然后再将 n 的值定义为 a(m)
m = '6'
n = 11
a = ''
print(m, n)
a = m
m = n
n = a
print(m, n)
# 方法2
# 直接使用python定义多个变量的概念,直接给m,n重新赋值如下:
m = '6'
n = 11
m, n = n, m
print(m,n)
5. 变量存储底层逻辑
5.1 计算机内存单位
bit(位) - 计算机最小单位
1 bytes(字节) = 8 bit - 程序员申请内存的最小单位
1 Mb = 1024 bytes
5.2 python定义变量和重新给变量赋值的底层逻辑
- 定义变量的时候会先计算需要保存的数据需要多大的内存,然后再按照计算结果去申请指定大小的内存,将数据保存到内存中,最后让变量和这个内存进行关联;
- 重新赋值的时候会根据新的数据申请新的内存,新的内存的大小由新的数据决定,然后将新的数据保存到新的内存中,最后让变量和新的内存进行关联
总结:
- python在定义变量或给变量重新赋值的时候都会根据数据的实际大小来重新申请内存
- 优点:不会有过度浪费内存及数据溢出的情况
- 缺点:效率低,不管是新定义还是重新赋值都需要重新申请内存等一系列操作,导致效率低
5.3 c、c++ 定义变量和重新给变量赋值的底层逻辑
- C 在定义变量的时候是程序员来考虑这个变量现在及以后占用的数据会是多大,是由程序员来设定的。
- C 在重新赋值的时候,直接将之前的值删除,将新的值填到里面。
总结:
- C语言在效率方面确实提高了很多,它是将计算变量数据大小的工作交给了程序员,而释放了设备的资源。
- 优点:
- 效率高
- 因为将计算变量数据大小的工作交给了程序员,相当于C语言少了一个工作步骤
- 且在重新赋值的时候也不需要修改内存大小,直接将旧的删除,填写新的数据
- 效率高
- 缺点:
- 程序编写复杂,程序员需要考虑变量数据存储大小
- 会有内存过度浪费及数据溢出的情况
- 比如:
- int 数字类型,就直接占用 4个字节内存,如果只是存储 100 这个数字,则会导致严重的内存浪费
- 如果存储 超过4个字节内存的数据,则会导致数据溢出
- 比如:
- 优点: