Python-变量

一、什么是变量?

变量就是可以变化的量,量指的是事物的状态,比如人的年龄,游戏角色的等级、金钱等等。

二、为什么要有变量?

为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的。

程序执行的本质就是一系列状态的变化,变是程序执行的直接体现。

三、如何用变量

1.变量基本使用

原则:先定义,后引用。

name = 'JL'  # 定义,往内存存
print(name)  # 引用,从内存取

age = 19
print(age)

2.内存管理:垃圾回收机制

垃圾:当一个变量值被绑定的变量名的个数为0时,该变量值无法被访问到,称之为垃圾。

引用计数增加

x = 10  # 10的引用计数为1
y = x  # 10的引用计数为2
z = x  # 10的引用计数为3

引用计数减少

del x  # 解除变量名x与值10的绑定关系,10的引用计数变为2
# print(y)
del y  # 10的引用计数变为1
# print(z)
z = 12345  # 10的引用计数变为0
# print(z)

3.变量有三大组成部分

I:变量名:是指向等号右侧值的内存地址的,用来访问等号右侧的值

II:赋值符号:将变量值的内存地址绑定给变量名

III:变量值:代表记录的事物的状态

4.变量名的命名规则

原则:变量名的命名应该见名知意。

  • 变量名只能是 字母、数字或下划线的任意组合
  • 变量名的第一个字符不能是数字
  • 关键字不能声明为变量名,常用关键字如下
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from','global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

PS:不要用拼音,不要用中文,在见名知意的前提下尽可能短

mingzi='JL'
名字='JL'
print(名字)
#程序也可以正常运行

5.变量名的命名风格

纯小写加下划线的方式(在python中,关于变量名的命名推荐使用这种方式)

age_of_son = 1
print(age_of_son)

驼峰体

AgeOfSon = 1
print(AgeOfSon)

6.变量值三个重要的特征

id:反映的是变量值的内存地址,内存地址不同id则不同

type:不同类型的值用来表示记录不同的状态

value:值本身

name='JL'
print(id(name))
print(type(name))
print(name)

is与==

  • is:比较左右两个值身份id是否相等
  • ==:比较左右两个值他们的值是否相等

id不同的情况下,值有可能相同,即两块不同的内存空间里可以存相同的值

id相同的情况下,值一定相同,x is y成立,x == y也必然成立

小整数池[-5,256]

从python解释器启动那一刻开始,就会在内存中事先申请好一系列内存空间存放好常用的整数。

#在Python解释器命令行中
m = 10
n = 10
m is n  # True

res = 4 + 6
m is res  # True

x = -6
y = -6
x is y  # False

x='aaa'
y='aaa'
id(x)  # 4566200880
id(y)  # 4566200880
#在PyCharm编译器中
x=-6
y=-6
print(id(x))  # 4547302608
print(id(y))  # 4547302608
print(x is y)  # True

#Pycharm扩大了小整数池,只是为了开发方便。但python程序运行是依托于Python解释器的,算是一个小注意点,了解即可。

7.常量:不变的量

注意:python语法中没有常量的概念,但是在程序的开发过程中会涉及到常量的概念。

age_of_son = 1
AGE_OF_SON = 1 # 小写字母全为大写代表常量,这只是一种约定、规范,但实质上还是变量。

8.补充知识:在定义变量时,变量名与变量值都是需要存储的,分别对应内存中的两块区域:堆区与栈区。

参考文章

1、变量名与值内存地址的关联关系存放于栈区
2、变量值存放于堆区,内存管理回收的则是堆区的内容

定义了两个变量x = 10、y = 20,详解如下图,

python常见的变量 python中变量的作用_python

当我们执行x=y时,内存中的栈区与堆区变化如下

python常见的变量 python中变量的作用_python_02


9.引用传递:Python中所有值的传递,传递的都不是值本身,而是值的引用,即内存地址。