什么是变量?
通俗理解就是储存数据的空间的名字,比如购物车
定义并使用变量
1 # 苹果单价 元/斤
2 apple_price = 5.5
3 # 苹果重量 斤
4 apple_weight = 10
5 # 计算购买苹果的价格
6 all_price = apple_price * apple_weight
7 print('购买十斤苹果一共需要:', all_price, "元")
输出效果:
注:Python中一个“ = ”代表的是赋值,不是判断是否等于。
变量名 = 变量值
# 定义苹果的单价 元/斤
# 对变量apple_price赋值 5.5
apple_price = 5.5
# 苹果的重量 斤
apple_weight = 10
# 计算购买需要的金额 首先计算右边的结果再赋值给左边的变量
all_price = apple_price * apple_weight
# 执行逻辑:先把变量值计算出来,再赋值给变量名
print("购买苹果的价格一共需要:",all_price,"元")
输出效果:
注:1、在Python当中,被单\双引号括起来的内容,我们称之为字符串
2、Python不会对字符串的输出进行处理
3、字符串和变量之间可以用 “ + ” 号拼接
变量命名的规范:
1、见名知意
2、如果有多个单词,用下划线链接。
3、不能用数字开头
4、变量名称由数字、字母(包括大写字母和小写字母)、下划线组成。最好使用英文,不要使用中文。
5、禁止使用关键字和函数名
(什么是关键字?就是Python的源代码的开发者,事先已经使用了的名字具有特殊含义,咱们不能在使用了)
Python关键字的查看方式
import keyword
print(keyword.kwlist)
关键字:
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
注:变量只能先声明才能使用!
交换两个变量的值
a = 10
b = 5
# Python独有的方式
a,b = b,a
print(a,b)
# 添加一个中间变量交换值
c = 0
c = b
b = a
a = c
print(a)
print(b)
# 不借助中间值
a = a + b
b = a - b
a = a - b
print(a)
print(b)
输出效果:
变量的运用
案例:根据苹果的单价和重量计算金额。
# 定义苹果的单价 元/斤
# 对变量apple_price赋值 5.5
apple_price = 5.5
# 苹果的重量 斤
apple_weight = 10
# 计算购买需要的金额 首先计算右边的结果再赋值给左边的变量
all_price = apple_price * apple_weight
# 执行逻辑:先把变量值计算出来,再赋值给变量名
print("购买苹果的价格一共需要:",all_price,"元")
输出效果:
知识点:
1、变量首先计算右边(变量值)的结果,再赋值给左边(变量名)。
2、在Python中不同类型的值是不能用 + 号拼接
(例如案例中,"购买苹果的价格一共需要:"这个是字符串,all_price输出的是数值,两个不同类型,故无法用 + 号进行拼接,只能用逗号拼接,仅在Print当中使用)
3、print 升级用法:可以填入多种类型的数据,用逗号分隔开,这样可以将里面的内容一次性输出
变量的引用
当程序执行过程中,数据在内存中处理,也就是说,所有的数据在内存中都有自己的地址。
id()函数可以检测当前的数据在内存中的地址
代码示例:
# 定义一个变量
a = 10
# 解读:变量 a 保存了数据10在内存中的地址,当我们读取 a 时,就可以通过这个内存地址读取到10这个数据
print("全局变量 a 在内存中的地址为:",id(a)) # 在print函数中调用了id函数
# 定义函数
def test(num):
print("{}在函数内部的内存地址是:{}".format(num,id(num)))
# 定义另一个变量
result = "hello"
print("函数的返回值的内存地址是:",id(result))
return result
test(a)
"""
输出结果:
全局变量 a 在内存中的地址为: 2259036826192
10在函数内部的内存地址是:2259036826192
函数的返回值的内存地址是: 2259042573168
"""
变量本质上保存的是数据的内存地址,这个地址指向了数据在内存中的位置。
如果一个内存空间,没有任何引用指向(变量),那么这个对象就是一个垃圾对象,Python垃圾回收器会自动回收。
应用场景:
代码示例:
# 定义一个列表
a = [100]
def test(num):
num = num + num # 全局变量的值没有改变
print("函数内部的num的值:",num)
test(a)
print("全局变量 a 的值:",a)
"""
输出结果:
函数内部的num的值: [100, 100]
全局变量 a 的值: [100]
"""
# 定义一个列表
b = [100]
def test(num):
num += num # 全局变量的值发生了改变
print("函数内部的num的值:",num)
test(b)
print("全局变量 b 的值:",b)
"""
输出结果:
函数内部的num的值: [100, 100]
全局变量 b 的值: [100, 100]
"""
分析:
当使用num += num 时,全局变量的值发生了改变;
由于列表是可变的数据类型,+= 表示num指向谁,就对谁进行修改;当 a 传递进来的时候,a 是可变类型,则直接修改。
当使用num = num + num 时,全局变量的值没有改变;
等于号前面的num是一个新的变量,一个等于号是赋值的意思,要先执行等于号右边的结果,将我们的结果保存在内存中,此时,左边的局部变量指向这个值