变量
"""
变量:可以变化的量,量指的是事物的状态,变量就是用来记录事物的一种状态的(身高、年龄、角色、等级等),而这些状态是会发生变化的
程序的运行本质:就是一系列状态变化的过程
变量使用原则:先定义,后引用
"""
name = '张大仙'
print(name)
没有定义,直接使用,报错:NameError: name 'aaa' is not defined --因为在引用aaa时,它还没有被定义(没有分配内存和赋值)。
print(aaa)
"""
在 Python 中,“变量先定义,后引用” 是一条基础语法规则,这里的 “引用” 指的是使用变量的值的行为
—— 当你在代码中需要用到某个变量存储的数据时,就是在 “引用” 这个变量。
“引用” 变量的场景包括但不限于:
直接使用变量的值:比如打印变量、将变量的值赋给其他变量等。
在表达式中使用变量:比如参与计算、判断等
作为参数传递给函数:比如将变量作为参数传给print()、len()等函数。
为什么必须 “先定义,后引用”?
Python 在执行代码时,会逐行解析变量。当你 “引用” 一个变量时,Python 需要知道这个变量对应的内存地址和值。
如果变量没有被 “定义”(即未赋值),Python 会找不到这个变量,从而抛出NameError错误。
总结:“定义” 是给变量分配内存并赋值的过程;“引用” 是使用变量已存储的值的过程。Python 要求变量必须先完成定义,才能被引用,否则会因找不到变量而报错。
"""
变量的内存管理
"""
定义变量就是在内存中开辟了一个内存空间,然后把内存空间的一个地址,捆绑给一个变量名,通过这个变量名,就可以找到这个对应的值在哪
定义变量时要占用内存空间的,但内存空间大小是有限的,申请了内存空间要用没关系,但是不用的话,一定要记得把这个内存空间给释放出来,不然就是在浪费内存资源,容易导致计算机内存被占满
内存溢出:程序占用一堆内存空间又不释放,最后把内存给撑爆了
定义变量申请内存空间,用了以后要把内存空间给释放出来,不释放就极有可能导致内存溢出的问题,这个操作就叫内存管理
python内存管理机制,被称为垃圾回收机制--垃圾回收机制就是用来回收这种没有关联任何变量名的值,这涉及到一个概念叫引用计数,就是统计引用的个数
"""
"""
垃圾回收机制:
"""
引用计数的增加
a = 100
b = a
c = a
引用计数的减少
del a # 表面上看del是删除,实际上指的是解除变量名a与值100的绑定关系,这时候100身上的引用计数就变成2了,
"""
Python解释器提供了一个功能,这个功能就在一直扫描这个内存里,有没有引用计数为0的,
一旦发现有引用计数为0的,就立马把这个内存空间直接给回收掉,这就是python的垃圾回收机制。
"""
"""
PyCharm提供的一个功能:格式化代码 -- 菜单栏上的code-reformat code(快捷键是:Ctrl+Alt+L)
变量的三大组成部分:变量名、赋值符号等号、变量值
变量名:指向的是等号右侧的值的内存地址,是用来访问等号右侧的值的
赋值符号=:是用来将变量值的内存地址绑定给变量名的
变量值:是用来表示记录的事物的状态的
变量名命令规则:
见名知意
变量名的组成必须是字母、数字、下划线(纯大写一般用来表示常量,纯小写一般用来表示变量),不能以数字开头
不能使用python内置的关键词作为变量名
一个单词不能清晰表达变量意思的时候,可以使用下划线连接多个单词使用
"""
变量的id和type
"""
变量值的两个重要特征
分别是id 和 类型type
id:是根据变量值的内存地址,所计算出一个id号码,注意:id不是内存地址,它是通过变量值的内存地址计算出来的,
类似于它的身份证号码,理解成它是内存地址的映射就可以了。
变量值的内存地址不一样,id就会不一样
type:变量值是用来记录事物状态的,而事物的状态是各种各样的,所以对应变量值也应该分多种类型,用来记录不同的事物的状态,这就是类型的概念。
"""
name = '张大仙'
print(id(name)) # 1681754971536
print(type(name )) # <class 'str'>
浙公网安备 33010602011771号